首頁  >  文章  >  後端開發  >  现在浏览器这么安全,是不是没必要进行csrf防御了?

现在浏览器这么安全,是不是没必要进行csrf防御了?

WBOY
WBOY原創
2016-06-06 16:44:411620瀏覽

首先,服务端nginx等需要设置跨域请求以及跨域frame请求是否允许(默认都是不允许的)。
再者,浏览器端对跨域ajax限制非常严格,根本不允许跨域访问cookie。

那么我们web开发时,现在对csrf所做的措施(一般是给form 加个hidden csrf token input),是否是多此一举了,完全没必要?

回复内容:

哈哈哈,当然仍旧需要。

测了下,虽然,nginx配置'X-Frame-Options' to 'SAMEORIGIN'后,同domain下居然不能iframe不同子域名,既然打不开就更别说之后的通过js来获取cookie进而得到session id。

但是一种更简单的攻击仍旧无法避免:

如果你在一个被我做了手脚的wifi环境(局域网)中,我污染了dns,并且做了个恶意站叫做csrf-attack,然后你登陆了某个没有csrf防御的站叫做no-csrf-token, 然后我在csrf-attack里做了个页面,里面有个这样的表单:

<code class="language-html"><span class="nt"><form> <span class="na">action=</span><span class="s">"no-csrf-token/reset-password"</span> <span class="na">method=</span><span class="s">"post"</span><span class="nt">></span>
  <span class="nt"><input> <span class="na">type=</span><span class="s">"hidden"</span> <span class="na">name=</span><span class="s">"password"</span> <span class="na">value=</span><span class="s">"password123"</span><span class="nt">></span>
  <span class="nt"><input> <span class="na">type=</span><span class="s">"hidden"</span> <span class="na">name=</span><span class="s">"repassword"</span> <span class="na">value=</span><span class="s">"password123"</span><span class="nt">></span>
  <span class="c"><!-- 更多的隐藏input --></span>
  <span class="nt"><button> <span class="na">type=</span><span class="s">"submit"</span><span class="nt">></span>点击送话费<span class="nt"></span></button></span>
<span class="nt"></span></span></span>
</form></span>
</code>
浏览器无法阻止crsf攻击。 【现在浏览器这么安全】......

这真的不是钓鱼贴? 所有的东西都在后台可以看到
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn