2013-07-18 62 views
3

我有一个关于csrf缓解的问题。文献建议在每个页面上使用一个标记,这些标记必须与任何表单一起提交 - 此标记必须对交易发生有效。跨站点请求伪造(CSRF)缓解

页面上的令牌如何通过csrf保护? 我不能只是做一个HTTP GET请求,解析HTML中的标记,然后在POST中使用该标记(在某个时间限制内),因为http是无状态的?

+0

http://en.wikipedia.org/wiki/Cross-site_request_forgery可能会让您更好地了解攻击是什么,以及为什么页面特定的令牌可以缓解攻击。 – bdares

回答

4

是的,你可以。但那不是CSRF。 CSRF是我偷偷地让你执行一个你不打算执行的操作。例如,如果您登录什么到特定的网站,我骗你去点击像这样一个链接:

http://test.com/action.php?delete_id=324

您点击链接和你的不舍,你最终删除一个你不想删除的资源。或者如果我让你查看像这样的图像(看看src):

<img src="http://test.com/action.php?delete_id=324" /> 

但是,如果action.php需要一个令牌呢?然后我(攻击者)必须尝试找出你目前使用的令牌。

http://test.com/action.php?delete_id=324&token=89723gdeHDdhipd823igb9bd87309287bhdebvtaGY

否则,该动作将不会发生,并且请求将被拒绝(或至少它应该是)。

+0

谢谢 - 看来我正在将XSS与CSRF结合在一起。 – user1220022

1

CSRF保护并不旨在阻止DOM解析或机器人获取令牌并提交表单。 CSRF是指恶意网站向目标网站提交表单或请求,目的是更改某些设置或对登录用户的帐户执行操作。

当提交表单时,目标网站的用户Cookie与请求一起发送,因此如果没有反CSRF令牌,恶意网站可能会影响用户的帐户或在目标网站上执行某些操作。恶意网站无法获取用户的特定反CSRF令牌,因此尝试将失败。

相关问题