2013-04-26 89 views

回答

1

我想你的意思是跨站请求伪造(CSRF)。这可以通过表单中的特殊CSRF令牌轻松阻止。

每次显示表单时,标记都应该不同。

<?php 
    $token = md5(time()); /* a simple attempt to generate a token */ 
    $_SESSION['csrf_token'] = $token; 
?> 

将它包含在您的表单中。

<form> 
    <input type="hidden" name="csrf_token" value="<?php echo $token ?>"> 
    ... 
</form> 

然后在表单提交的服务器上验证它。

<?php 
    $storedToken = $_SESSION['csrf_token']; 
    unset($_SESSION['csrf_token']); 
    if ($_POST['csrf_token'] == $storedToken) { ... } 
?> 

确保令牌只能使用一次。

使用SSL以提高安全性,如果尚未到位。

+0

谢谢 - 什么是阻止某人创建一个自动获取令牌并响应的bot? – user1946914 2013-04-26 15:24:43

+0

这是captcha的是和不同的问题。您的担心是“跨站点攻击”。如果一个bot提交表单,它不是跨站点。 **每个有权访问表单的人都可以提交**。 – Bart 2013-04-26 16:50:18