作者carlcarl (carl)
看板PHP
标题Re: [请益] 如何防止远程表单攻击
时间Thu Sep 27 22:32:53 2012
※ 引述《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