我使用 CodeIgniter 创建了一个网络应用程序。我在应用程序中有几个地方使用了ajax。
我想知道是否有一种方法可以停止对 ajax 控制器的直接访问和查询,而只允许处理源自页面的合法 ajax 请求。
Thanks.
是的,您可以毫无问题地执行此操作。 CodeIgniter 输入类有一个名为 is_ajax_request() 的方法。只需在控制器操作开始时检查这一点即可。例如:
function ajax_save() {
if ($this->input->is_ajax_request()) {
//continue on as per usual
} else {
show_error("No direct access allowed");
//or redirect to wherever you would like
}
}
如果您有完全为 ajax 调用指定的控制器,则可以将该 if 语句放入构造函数中function __construct()
对于控制器。记住先调用parent::constructor()!
编辑:至于“源自页面”,您可能应该对 ajax 请求进行身份验证+安全检查(可能通过会话,这样您就不会访问数据库)。因此,不隶属于您的 web 应用程序的恶意用户无论如何都不应该能够手动发送 ajax 请求。希望这能回答您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)