1

在 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)如果有人可以在视图源中看到文件名,是否存在任何安全问题?如果是,有什么解决方案?

4

2 回答 2

1

检测 Ajax 标头:

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

但请注意,专家级的黑客会简单地将此类标头添加到请求中。

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

更新

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

于 2013-02-28T12:28:49.007 回答
1

如果有人直接导航,则无法更改页面,因为服务器无法区分正常请求和 AJAX 请求。黑客可以轻松地操纵请求的标头。

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

于 2013-02-28T12:32:40.130 回答