ASP.NET安全性最佳实践

Ram*_*oni 25 asp.net security

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

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

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

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

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

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

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

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

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

    <customErrors mode ="On"defaultRedirect ="MyErrorPage.htm"/>

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

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

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

Phi*_*ins 11

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