Heim  >  Artikel  >  Backend-Entwicklung  >  现在浏览器这么安全,是不是没必要进行csrf防御了?

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

WBOY
WBOYOriginal
2016-06-06 16:44:411623Durchsuche

首先,服务端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攻击。 【现在浏览器这么安全】......

这真的不是钓鱼贴? 所有的东西都在后台可以看到
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn