看板 PHP 關於我們 聯絡資訊
※ 引述《kencool107 (臉都歪了)》之銘言: : 我想請問一下 : 有什麼方法可以防止這種攻擊 : 檢查REFFER可以偽裝 : 網路上說用session : 可是我看不太懂是什麼意思 : 而且我照做 : 還是可以另存頁面再改掉提交 : 這是傳送端A.php : <?php : session_start(); : $token = md5(uniqid(rand(), true)); : $_SESSION['token']= $token; : ?> : <form action="http://XXXX/B.php" method="post"> : <p><label for="name">Name</label> : <input type="text" name="name" id="name" size="20" maxlength="40"/></p> : <input type="hidden" name="token" value="<?php echo $token;?>"/> : <p><input type="submit" name="submit" value="go"/></p> : </form> : 這是接收端B.php : <?php : session_start(); : if ($_POST['submit'] == "go"){ : if ($_POST['token'] == $_SESSION['token']) : { : echo "success"; : }else{ : echo "fail"; : } : } : ?> : 可是我先開A 然後複製A的原始碼到我的本機改值 : 然後再送到B : 他檢查session還是相同的 邏輯來看好像是這樣沒錯 : 所以要怎麼做哩 你這邊講的方法這段是防止 跨網站攻擊(Cross-site request forgery) 所以這個方法本身沒錯 只是跟你想要的用途可能不太一樣 我有點不太懂你想擋啥@@ 照你的這個作法來作的話 你可以作什麼樣的攻擊? (如果我把值過濾好的話) 即使是驗證碼 我也是可以開了頁面 得到驗證碼 自己另外送個request+驗證碼過去 如果沒啥奇怪的值 那何必擋 如果有 那就做好輸入值的過濾就好啦@@ 就是說...不太需要去管他是從網站這邊 還是他另存頁面然後另外送 這不算攻擊 當然如果是高頻率的重複性提交 這時就可以考慮用驗證碼之類的來擋 -- http://blog.carlcarl.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.43.36