ASP.NET安全性最佳实践

时间:2008-11-17 09:14:18

标签: asp.net security

其他ASP.NET安全最佳实践是什么?

到目前为止已确定列于此处:

  • 每当您将应用程序转移到生产环境时,始终会生成新的加密密钥和管理员密码。

  • 切勿直接或以加密形式存储密码。始终以单向散列密码存储。

  • 始终将连接字符串存储在Web.config的标记中,并使用受保护的配置提供程序(RSA或DPAPI)在配置部分对其进行加密。请参阅example here

  • 使用具有最小权限的用户ID连接到SQL Server或您正在使用的数据库。例如,如果您只是从某个应用程序模块执行存储过程,那么您必须创建一个只能执行的用户ID。

  • 如果要在页面上使用基于角色的安全性,请使用PrincipalPermission

    [PrincipalPermission(SecurityAction.Demand, Role="Admin")]  
    public class AdminOnlyPage : BasePageClass  
    {  
      // ...  
    }
  • 始终使用参数来阻止SQL查询中的SQL Injection

    1. 考虑在IIS服务器上安装URLScan以防止SQL注入。 另外,用于防止XSS攻击。您可以使用MSFT的AntiXSS库而不是内置编码输出,而不是HttpServerUtility中的内置HtmlEncode。
  • 始终在web配置中保留customErrors以使您将错误/异常设为私有

    < customErrors mode =“On”defaultRedirect =“MyErrorPage.htm”/>

  • 在Web应用程序中,始终验证用户对html标记或任何脚本的输入。

  • 切勿存储敏感信息,例如Cookie中的密码。

  • 如果发生异常,请勿显示系统错误消息,堆栈跟踪等。

7 个答案:

答案 0 :(得分:11)

我发现微软的Developer Highway Code是一个有用的安全检查表。

答案 1 :(得分:4)

微软对此主题有很多话要说:

答案 2 :(得分:4)

  1. 切勿将密码等敏感信息存储在Cookie中。
  2. 如果发生异常,请勿显示系统错误消息,堆栈跟踪等。

答案 3 :(得分:1)

查看新的安全运行时引擎(测试版于11月14日发布):

http://blogs.msdn.com/cisg/archive/2008/10/24/a-sneak-peak-at-the-security-runtime-engine.aspx

http://blogs.msdn.com/cisg/archive/2008/11/13/an-update-on-some-upcoming-free-tools.aspx

这应该替换当前的Anti-XSS库。

安东尼:-) www.codersbarn.com

答案 4 :(得分:0)

在页面上显示数据库中的内容时,您可以使用 HttpServerUtility.HtmlEncode 对输出进行编码,以避免跨站点脚本(XSS)攻击。

答案 5 :(得分:0)

考虑在IIS服务器上安装URLScan以防止SQL注入 另外,为了防止XSS攻击,我会使用MSFT的AntiXSS库而不是内置的编码输出,而不是HttpServerUtility中的内置HtmlEncode。

答案 6 :(得分:0)

您可能对本文Security Best Practices: ASP.NET Applications感兴趣。 HTH