网站建设安全原则

1、 控制所有的输入

  • 不要禁止ASP.NET系统验证机制(即不要把ValidateRequest设为False),如果确实需要禁止验证,只在需要的地方执行。(防止XSS攻击)
  • 在所有的输入启用服务器端验证控件(Range, RequiredField,Custon or RegularExpression)

2、 不要向客户端返回未过滤的数据

  • 在向客户端返回数据前使用HttpUtility.HtmlEncode或HttpUtility.UrlEncode.
  • 如果需要允许一些特殊字符,先使用编码方法,然后用HTML代码替换它们。

// Encode thestring input from the HTML input text field

StringBuilder sb= new StringBuilder(HttpUtility.HtmlEncode(htmlInputTxt.Text));

// Selectivelyallow <b> and <i>

sb.Replace(“&lt;b&gt;”,”<b>”);

sb.Replace(“&lt;/b&gt;”,”</b>”);

sb.Replace(“&lt;i&gt;”,”<i>”);

sb.Replace(“&lt;/i&gt;”,”</i>”);

3、 不要使页面未过滤的数据生成SQL请求(防SQL注入)

4、 避免在网站树目录中储存敏感数据

  • 将连接串写在web.config的<connectionStrings>中,并使用如下命令加密(或用其他更加复杂的加密方式,如带密钥的RSA加密)。先在服务器上布置后再加密。

cd website_directory

aspnet_regiis-pef “connectionStrings”

  • 使用相同的命令来加密配置文件(如appSettings, identity, sessionState)中的敏感字段。

5、 不要给予一个没有检查路径和后缀的文件以任何权限

6、 不要信任不受你权限控制的任何不可靠元素

  • 不要在viewstate中存放敏感字段,并且不要用其中的数据进行安全验证。
  • 需要考虑加密viewstate。
  • 如果你使用ViewState加密技术,并且在Web Farm中配置应用程序。你必须确定在各个服务器上散列的配置文件和密钥。

7、 不要在页面留下任何注释,若需要,使用ASP.NET注释

8、 不要暴露多余的安全信息

  • 使用统一的错误页面,不要让系统级别信息返回客户端。

9、 不要让你的WebServer帮你管理错误

  • 确保你的WEB服务不会返回含有过多细节的错误信息。

10、每个页面都必须验证用户访问

  • 每打开一个页面都要检查用户是否通过登陆认证。

11、不要使用有规律的标识号

  • 程序中所有的标识号必须使用GUID类型。

12、使用尽量少的缓存操作

  • 所有包含敏感数据的页面必须包含下列标签(Set page topre-expire,No-cache,No-pragma-cache)。

原文链接:https://www.cnblogs.com/liuweicfyj/archive/2009/12/16/1625278.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/17354

(0)
上一篇 2023年2月11日
下一篇 2023年2月12日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml