您的位置:首页 > 运维架构 > 网站架构

网站建设安全原则

2009-12-16 09:25 176 查看
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("<b>","<b>");

sb.Replace("</b>","</b>");

sb.Replace("<i>","<i>");

sb.Replace("</i>","</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)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: