保护ajax处理文件。有必要吗?

时间:2013-02-28 12:26:19

标签: php ajax

在register.php文件中包含用户名(电子邮件,密码等)验证的javascript代码。

例如,Javascript包含此类代码     var url =“_ password_confirmation_validator.php”;

_password_confirmation_validator.php从输入表单(register.php)获取值并验证输入。

任何查看register.php源代码的人都可以看到服务器上存在文件_password_confirmation_validator.php

当我直接导航到_password_confirmation_validator.php时,我可以看到密码为空的消息。

如果在_password_confirmation_validator.php中我放置了标题重定向(如果有人直接导航到该文件,则重定向,则ajax不起作用)。

如果在_password_confirmation_validator.php中,ajax也不起作用我放置条件如

if ($_POST['register'] ){

表单输入字段就像输入onkeyup =(所以onkeyup ajax开始验证)。

问题是

1)如果有人直接导航,如何为_password_confirmation_validator.php写一些条件以显示任何内容?

2)如果有人可以在视图源中看到文件名,是否存在安全问题?如果是,那将是什么解决方案?

2 个答案:

答案 0 :(得分:1)

检测Ajax标头:

if(empty($_SERVER['HTTP_X_REQUESTED_WITH'])) {
  die("");
}

但请注意,专家黑客只会在请求中添加此类标头。

另一种方法是在页面中放置一个随机代码并随请求发送,每次都重置代码然后生成一个新代码。

<强>更新

最合适的方法是在页面中添加一个额外的随机(基于时间)参数。或者只是使用验证码/重新验证码

答案 1 :(得分:1)

如果有人直接导航,则无法更改页面,因为服务器无法在正常请求和AJAX请求之间产生干扰。黑客可以轻松操纵请求的标头。

关于你的第二个问题,一个好的规则是永远不要通过可能没有发布的AJAX发送信息。如果您这样做,请考虑使用密码系统和使用HTTPS。