1

我正在开发一个 php 网站,允许用户添加带有描述、图像等的产品。我正在使用 POST 方法接收用户输入。但是,如果用户知道表单输入名称和表单的操作链接,他们可以使用 javascript 发送不断的请求并堵塞我的数据库。

所以,如果我能以某种方式从 POST 请求的来源处获取 URL,我可以阻止这种情况。如果 POST 请求来自我网站的 url,我只能将信息输入数据库。

我知道使用验证码也可以防止这种攻击,但我想要一个替代方案,主要是因为验证码很痛苦。

有什么方法可以在不使用验证码的情况下做到这一点?也许会议?

4

3 回答 3

0

您可以使用标头只允许来自您的网址的帖子:

    header('Access-Control-Allow-Origin: http://yoururl.com');

干杯

于 2013-10-11T15:30:33.063 回答
0

您可以检查:

$_SERVER['HTTP_REFERER'] 

可变的,但这可能会被伪造,所以要小心。

您最好使用一些设置为值的隐藏输入,这些值必须等于插入发生的设置字段(这种技术的名称目前让我无法理解)。

IE

<input type="text" id="areyouhuman" name="areyouhuman" value="123456001" />

用 CSS 隐藏它:

#areyouhuman{
     display:none;
}

希望有一点帮助?

PS我也讨厌验证码!

于 2013-10-11T16:09:51.963 回答
0

为表单提供安全性的最佳方式可能是向表单添加 CSRF 令牌(http://en.wikipedia.org/wiki/Cross-site_request_forgery)。

它的工作原理是每次渲染表单时都会生成伪随机代码并将其存储在会话变量中,并将相同的代码作为隐藏输入放入表单中。

因此,当用户发布表单时,您可以验证以查看 csrf 令牌是否相同。

还有另一个关于这个的线程,所以你可以看看(如何使用 PHP 正确添加 CSRF 令牌

于 2013-10-11T16:20:21.530 回答