我使用CodeIgniter创建了一个webapp。有几个地方我在应用程序中使用ajax。
我想知道是否有一种方法可以阻止对ajax控制器的直接访问和查询,并且只允许处理来自页面的合法ajax请求。
感谢。
答案 0 :(得分:5)
是的,你可以毫无问题地做到这一点。 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请求上进行身份验证+安全检查(可能通过会话,以便您不会访问数据库)。因此,与您的webapp无关的流氓用户无论如何都不能手动发送ajax请求。希望这能回答你的问题。