其他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。
始终在web配置中保留customErrors以使您将错误/异常设为私有
< customErrors mode =“On”defaultRedirect =“MyErrorPage.htm”/>
在Web应用程序中,始终验证用户对html标记或任何脚本的输入。
切勿存储敏感信息,例如Cookie中的密码。
答案 0 :(得分:11)
我发现微软的Developer Highway Code是一个有用的安全检查表。
答案 1 :(得分:4)
微软对此主题有很多话要说:
答案 2 :(得分:4)
答案 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