您如何编写单元测试来测试ASP.NET Web表单应用程序的CSRF漏洞?

时间:2009-04-17 04:52:39

标签: asp.net security unit-testing

我们有一个ASP.NET Web表单应用程序,可能容易受到跨站点请求伪造(CSRF)攻击。我们如何开始编写一个能够提醒我们的单元测试?使用NUnit。一些提示或指示会很棒。

2 个答案:

答案 0 :(得分:1)

CSRF是一种攻击,用户被欺骗(例如通过电子邮件中的链接)代表攻击者执行操作,同时已经在您的网站上进行了身份验证。

有几种方法可以降低您应该测试的风险 -

  • GET请求不应该有副作用 - 所有操作都应该只使用POST请求来完成。攻击者更难以生成源自用户的POST请求。
  • 您希望将一个随机唯一的每页字符串发送给用户,并在返回服务器时进行检查。用户的cookie将在攻击者引起的请求中发送,但攻击者不会知道表单中存储的字符串。在.NET中,我认为您可以使用Viewstate。
  • 对于特别敏感(或易受攻击)的操作或在一段时间不活动后,您可以请求用户重复身份验证

OWASP(由Torbjørn联系)确实是一个很好的资源,包含更详细的解释和建议。

答案 1 :(得分:0)

您需要了解CSRF是如何完成的。进入黑客的思维方式。然后,您需要创建执行CSRF的自动化测试。这可能不是单元测试(测试单个单元),更像是集成测试。当您成功执行CSRF攻击时 - 当您的测试为红色时 - 您将能够解决问题。

查看CSRF FAQ以获取有关如何执行攻击的更多信息。这是一篇关于你应该查看的Testing for CSRF的好文章。