2010-09-13 84 views
1

我有一个会显示敏感信息的网站。我使用反伪造令牌等来防止POSTS中的XSRF。不过,我担心有人能够从GET中查看敏感信息。在.NET MVC 2中,保护通过GET发送的只读数据的建议做法是什么?XSRF保护GET .net mvc

回答

1

如果您确定GET请求是只读的,那么您无需担心XSRF。它不可能使用 XSRF窃取来自其他网站的信息,因此您无需通过令牌保护网址。实际上,在URL中使用令牌将使书签无法使用。

话虽如此,您应该100%确定您的应用程序中没有XSS漏洞。如果存在,攻击者不需要为XSRF和不可预知的令牌而烦恼。

+0

敏感表单提交应该是不可能的书签 – SinistraD 2010-09-13 16:46:52

+0

如果它的表单提交修改数据,那么它应该是一个POST,然后重定向到一个GET url。如果表单提交的内容只能作为一种过滤器,它仍然可以是GET,并且没有理由牺牲可收藏的网址。 – 2010-09-13 16:55:02

+0

我很担心以下情况。另一个站点可以运行在XSS上(或者是通过社交工程访问的恶意站点)。用户登录到我的站点并转到恶意站点,这会向例如accounts/Index发出javascript GET请求,并且现在有一个帐户列表的副本,他可以将其隐藏回到另一个Web服务器。 – 2010-09-14 07:32:53

0

POST数据的XSRF保护(使用像你说的令牌)也应该对GET数据起作用。从黑客角度来看,GET伪造要比POST伪造容易得多(首先你只发布一个链接,第二个你需要指向隐藏的iframe和自动提交表单的恶意软件网站),但是如果两者都失败,令牌被检查。

例子: 张贴这样的链接:

是www.domain.tld/page.aspx GET =数据&令牌= token_given_to_hacker

不应返回任何东西,或者仅仅是一个错误?对于那些有其他代币的人。这样就不会对错误的人采取敏感的行动。

这是xsrf,有了这个你不能窃取信息,而是让其他人提交表单并采取行动,只有黑客知道。例如: 将电子邮件以电子邮件形式更改为黑客的电子邮件。假设您有一个GET表单,其中包含1个字段:新邮件(为了简单起见)。当提交的URL看起来像这样:

www.domain.tld/[email protected]

现在,如果一个黑客的帖子上的网址您的论坛链接:

www.domain.tld/[email protected]

大家谁点击它,会得到黑客的新的电子邮件。但是,如果您在此处放置了一个令牌,并且每次都会对其进行检查,则只会对那些在页面请求中给出相同标记的用户采取相应操作,在这种情况下,该链接仅适用于发布该令牌的用户,并没有其他人。

您还可以使用密码字段保护敏感表单,如更改电子邮件,密码等。请注意,验证码在这里帮助不大。