ASP.NET安全最佳实践[关闭]

问题描述 投票:26回答:7

还有哪些其他ASP.NET安全最佳实践?

到目前为止已在此处列出:

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

  • 切勿直接或以加密形式存储密码。始终以一种方式存储散列密码。

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

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

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

    [PrincipalPermission(SecurityAction.Demand,Role =“ Admin”)]公共类AdminOnlyPage:BasePageClass{// ...}
  • 总是使用参数来防止SQL查询中的SQL Injection

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

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

  • 从不存储敏感信息,例如cookie中的密码。

  • 如果出现异常,则不显示系统错误消息,堆栈跟踪等。
asp.net security
7个回答
12
投票

我发现Microsoft的Developer Highway Code是有用的安全检查表。


4
投票

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


4
投票
  1. 切勿在cookie中存储敏感信息,例如密码。
  2. 如果发生异常,则不显示系统错误消息,堆栈跟踪等。

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


0
投票

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.