我正在开发一个php网站,允许用户添加带有描述,图像等的产品。我正在使用POST方法接收用户输入。但是,如果用户知道表单输入名称和表单的操作链接,他们可以使用javascript发送常量请求并阻塞我的数据库。
所以,如果我能以某种方式获取POST请求来自的URL,我可以阻止它。如果POST请求来自我网站的网址,我只能将信息输入数据库。
我知道使用验证码也可以防止这种攻击,但我想要一个替代方案,主要是因为验证码很痛苦。
我可以在不使用验证码的情况下完成任务吗?也许会议?
答案 0 :(得分:0)
您可以使用标题仅允许来自您网址的帖子:
header('Access-Control-Allow-Origin: http://yoururl.com');
干杯
答案 1 :(得分:0)
您可以查看:
$_SERVER['HTTP_REFERER']
变量,但这可能是伪造的,所以要小心。
你最好使用一些设置为值的隐藏输入,这些值必须等于插入的设置字段(此技术的名称目前不在我这里)。
即
<input type="text" id="areyouhuman" name="areyouhuman" value="123456001" />
用CSS隐藏它:
#areyouhuman{
display:none;
}
希望有所帮助吗?
P.S。我也讨厌Captcha!
答案 2 :(得分:0)
为表单提供安全性的最佳方法可能是在表单中添加CSRF令牌(http://en.wikipedia.org/wiki/Cross-site_request_forgery)。
它的工作原理是每次渲染表单时都会生成伪随机代码并将其存储在会话变量中,并在表单中添加与隐藏输入相同的代码。
因此,当用户发布表单时,您可以验证csrf令牌是否相同。
还有另一个关于此问题的线索,所以你可以看一下 (How to properly add CSRF token using PHP)