2013-04-26 63 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