Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写单元测试来测试ASP.NET web窗体应用程序的CSRF漏洞?_Asp.net_Security_Unit Testing - Fatal编程技术网

如何编写单元测试来测试ASP.NET web窗体应用程序的CSRF漏洞?

如何编写单元测试来测试ASP.NET web窗体应用程序的CSRF漏洞?,asp.net,security,unit-testing,Asp.net,Security,Unit Testing,我们有一个ASP.NET web表单应用程序,它可能容易受到跨站点请求伪造(CSRF)攻击。我们如何开始编写一个单元测试来提醒我们这一点?使用NUnit。一些提示或指针会很好。您需要了解CSRF是如何完成的。进入黑客的思维方式。然后,您需要创建执行CSRF的自动化测试。这可能不是单元测试(测试单个单元),更像是集成测试。当您成功执行CSRF攻击时(当您的测试为红色时),您将能够修复该问题 有关如何执行攻击的更多信息,请查看。这里有一篇关于你应该查看的好维基文章。CSRF是一种攻击,用户被欺骗(例

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

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


有关如何执行攻击的更多信息,请查看。这里有一篇关于你应该查看的好维基文章。

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

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

  • GET请求不应有副作用-所有操作都应仅使用POST请求完成。攻击者更难生成来自用户的POST请求
  • 您希望将一个随机唯一的每页字符串发送给用户,并在返回到服务器时进行检查。用户的cookie将在攻击者发出的请求中发送,但攻击者不知道表单中存储的字符串。在.NET中,我认为您可以使用Viewstate进行此操作
  • 对于特别敏感(或易受攻击)的操作或在一段时间不活动后,您可能会请求用户重复身份验证
(由Torbjørn链接)的确是一个极好的资源,包含了更详细的解释和建议