我想知道使用admin ajax是否安全。php用于前端的ajax请求。
将它作为协议用于AJAX请求从根本上讲并没有什么不安全之处。
那么它安全吗这个问题没有什么意义,就像“掷硬币安全吗?”没什么意义。唯一真正的答案是it depends
这取决于AJAX请求处理程序在另一端做了什么,以及是否安全地构建它。
通过以下方式构建安全的AJAX处理程序admin-ajax.php
取决于您的处理程序所做的工作和执行的检查,例如nonce、能力检查、验证、清理等
记住,您需要自己实施所有安全检查
安全vs什么
其他选项:
主题或插件中的独立文件,或根WP文件夹中的独立文件,这是一个安全漏洞,因为现在即使主题或插件被禁用,也有一个始终处于活动状态的独立端点。此外,它需要引导WP,迫使您编写文件,使其只能在特定位置工作,否则它将不知道需要加载的文件在哪里,从而使其变得脆弱。它还需要包含一组常量,以便WordPress正确引导。
此外,您还必须自己实现所有检查,额外的好处是该文件只能在一个位置工作。做到这一点非常困难,需要与核心贡献者同等的技能。大多数开发人员都不知道他们可能需要做的一些事情,包括但不限于:
输入验证
输入清理用户能力检查临时验证用户身份验证输出检查输出转义显示错误消息重定向等此外,没有启用或禁用独立文件的机制。例如,如果example.com/site1
有一个用于联系使用独立文件的管理员的插件,那么这将适用于多站点上的所有站点,即使该插件已停用。现在,任何人都可以联系任何站点的管理员,即使是那些您不希望使用该选项的站点。此外,没有提供调试支持,因此如果出现问题,您唯一的帮助就是PHP错误日志。
导致重大问题的独立文件的一个很好的示例是timthumb.php
.
页面模板这需要创建一个具有特定URL的页面,然后将其配置为使用页面模板。
此外,这需要管理AJAX和独立文件所需的所有检查。从好的方面来看,您不需要引导WordPress。
REST API端点使用专门为javascript请求构建的API。此外,它更容易使用。您可以指定端点采用的参数、需要的功能等,如果您告诉它预期的内容,它将为您完成所有转义、验证和清理。
如果您没有满足请求所需的要求,它会告诉您在响应中做错了什么,例如,它会告诉您不能做什么。除非您将其编程为,否则管理AJAX不会。
此外,它还可以发现端点(但仅限于能够使用端点的用户),提供过滤和覆盖其他插件的机制,并避免其他选项的所有缺点。
那么它安全吗
这要看情况而定,这个问题本身太简单了。但是如果你想要一个正确的安全答案,那么不,没有什么可以被认为是百分之百安全的,这是不可能的。
使用管理ajax是好是坏。php
这是一种良好的做法,REST API endpoints built using the WP APIs are better though in every way imaginable