13

我所有项目的页面都需要身份验证..通常我不在[ValidateAntiForgeryToken] and @Html.AntiForgeryToken()我的控制器和视图上使用..只有登录页面有它..

  1. 他们是什么[ValidateAntiForgeryToken] and @Html.AntiForgeryToken()??
  2. 我需要使用它们吗?
  3. 我必须使用哪种无饼干?

我的 web.config 的部分是这样的;

<authorization>
  <deny users="?" />
</authorization>
<authentication mode="Forms">
  <forms loginUrl="~/User/Login" timeout="30" cookieless="UseDeviceProfile" name="AbosSMSP" />
</authentication>

我的错误是这样的; 我的错误是这样的

4

1 回答 1

22

想想 antiforgerytoken 是一种确保进入 post 操作的请求实际上是源自您输出视图的请求的一种方式。它可以阻止跨站点脚本攻击,我认为它也可以处理后期重放攻击。

保护您的应用程序的前门是一个好的开始,它可以阻止人们通过暴力窃取他们的数据,但是,它并不能阻止所有形式的攻击。诸如社交工程和网络钓鱼之类的东西可以让某人进入您的网站,而不会破坏登录页面。

一旦进入,他们就会遇到各种令人讨厌的事情,因此请查看 OSWAP 的建议,看看是否还有其他您可能容易受到攻击的攻击。 http://www.ergon.ch/fileadmin/doc/Airlock_Factsheet_OWASP_en.pdf

如果有疑问,您可以让道德黑客对您的网站进行数百斯特林的笔测试,如果您正在处理敏感数据,那么我建议您这样做,因为他们会提取您甚至可能没有想到的东西。

我的安全提示

  1. 登录页面上的 Antiforgerytoken
  2. 将所有身份验证尝试减慢至少一秒钟(使蛮力不切实际)
  3. 对 n 次无效登录实施帐户锁定程序
  4. 始终在登录失败时使用通用错误消息,以防止黑客知道登录的哪一部分是错误的
  5. 始终使用盐在数据库中加密您的密码,盐应该是每个用户,以防止对被盗数据库的彩虹攻击
  6. 始终确保显示或检索的任何数据对该用户有效
  7. 始终使用参数化 sql
  8. 尝试混淆在您的 url 和视图中传递的 id,以防止修改或尝试直接引用攻击

在那之后,我认为您将掩盖渗透测试会引发的大部分内容,并为您提供一个安全站点的良好位置

于 2013-06-20T08:12:04.883 回答