2008-11-17 143 views
23

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

到目前为止确定这里列出:

  • 每当你移动一个应用到生产始终生成新的加密密钥和管理员密码。

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

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

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

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

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

    1. 考虑在IIS服务器上安装URLScan以防止SQL注入。 此外,为了防止XSS攻击。您可以使用MSFT的AntiXSS库而不是内置的编码输出,而不是使用HttpServerUtility中的内置HtmlEncode。
  • 上的customErrors始终保持在网络配置,让你的错误/异常私人

    <的customErrors模式= “ON” 的defaultRedirect = “MyErrorPage.htm”/ >

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

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

  • 如果发生异常,不要显示系统错误消息,堆栈跟踪等。
+1

这应该是一个维基。 – NotMe 2008-12-01 06:35:20

+0

看看http://gosecure.github.io/security-cheat-sheet/ – SPoint 2017-06-05 19:40:06

回答

0

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

0

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

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