在我的CMS中,我有一个使用AJAX将大量迷你接口加载到面板的页面。这些接口来自/ajax
目录中的各种PHP文件。PHP - 只允许通过AJAX访问
是否有可能以某种方式允许使用ajax访问这些文件,而不仅仅是浏览它们?
当然,我担心有人会发现/ajax
目录,并且无需登录即可访问CMS的核心功能。当然,我可以导入我的用户类并单独验证每个AJAX文件,但是只能通过AJAX访问吗?
在我的CMS中,我有一个使用AJAX将大量迷你接口加载到面板的页面。这些接口来自/ajax
目录中的各种PHP文件。PHP - 只允许通过AJAX访问
是否有可能以某种方式允许使用ajax访问这些文件,而不仅仅是浏览它们?
当然,我担心有人会发现/ajax
目录,并且无需登录即可访问CMS的核心功能。当然,我可以导入我的用户类并单独验证每个AJAX文件,但是只能通过AJAX访问吗?
是否有可能以某种方式允许使用ajax访问这些文件,而不仅仅是浏览它们?
号
你可以添加额外的HTTP标头,或者修改现有的(如Accept
)当你从JavaScript的请求......但既然你想出于安全原因,做到这一点,那将不足。
当然,我可以导入我的用户类,并验证每一个AJAX的单独文件
做到这一点。 Ajax请求并不特殊。它们只是HTTP请求。针对Ajax创建的终点应像其他任何HTTP请求终点一样,通过身份验证/授权进行保护。
不,不管怎样,黑客都可以伪造Ajax请求。你需要在任何地方进行身份验证,否则你会被搞砸。
从浏览器外部,任何人都可以向您网站上的任何公开网址发起HTTP请求。除了标题之外,没有什么特别的AJAX请求,而且这些请求很容易被欺骗。
现在什么不能很容易被欺骗是一个安全的会话机制。如果您要求人们登录,那么无论如何您都应该这样做。
简单的答案,“不”。
您的ajax文件还应该验证用户是否以系统前端相同的方式登录。
AJAX与Standart请求几乎相同,您可以检查标题,但这不是安全的方式。如此之短,你不能这样做。在服务器端对你提出的建议进行认证。
验证您的AJAX文件。如果它们有很多,请创建一个类并将其扩展到每个单独的AJAX文件中。
/ajax/abstract.php
:
<?php
abstract class AjaxHandler {
public function __construct() {
// import authentication handler
if ($authenticated) {
$this->display();
}
else {
header('HTTP/1.1 401 Unauthorized');
exit;
}
}
}
然后在每个文件中,即/ajax/get_user_profile.php
:
<?php
class GetUserProfile extends AjaxHandler {
public function display() {
// do your routine
}
}
好了,你可以有另一种选择是使用post
方法来获得从PHP的内容,并在你的PHP你应该设置为post
方法的关键。然后系统删除跨源访问。 :)
不,您**必须**将您的验证码放入处理服务器端代码的每个请求中。 – Flukey
这是一个糟糕的安全模型。 – NullUserException
@NullUserException我没有说这是我的任何生产代码中的安全模型 - 我只是好奇... –