且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

保障Web安全的一些***实践

更新时间:2022-09-22 15:06:54

http://msdn.microsoft.com/zh-cn/library/ms994921.aspx
列了设计,开发,部署Web应用程序的一些***实践,有些是个人的心得体会,有些是通过资料得来的,比较简单,给大家提个参考用。

恩,一切的前提还是你先保证网络安全和主机安全,然后再考虑Web安全,不然白搭.....

1.物理网络架构方面
在不同的主机上部署web server, app server, database server。
限制外界web server的连接,比如只提供80端口。
限制web server与app server,database server之间的连接,比如使用防火墙或者操作系统或者软件的配置。
不在web server上存储机密的信息,如果存储,***加密。比如其他server的帐号信息。

2.认证
采用规范的认证方法,密码,证书,活动密钥,生物方式。如果你所在的公司有现成的认证接口或者认证产品,用这个,不要自己编。如果要求比较强烈,可以考虑多种认证方式并行。比如密码+证书+活动密钥
传输密码时***加密,存储密码时也***加密。
设计密码时满足一定的强度,特别是管理员的帐号...

3.授权和访问控制
每个用户满足最小权限原则。
在逻辑层和数据层做访问控制,在表现层(网页,flash文件)做的访问控制对安全没有实际用途

4.Session管理
各种中间件上的session管理已经很好了,不要随便自己编。(国内的应该没有自己编的....)
session应该设置为一定时间内过期。
不要轻易设置为让浏览器固态存储cookie
一个帐号***只允许一个用户登录
不要在客户端放置任何标识用户身份的信息,只信赖session id

5.连接数据库
连接数据时应该使用最小权限的帐号(一上来就用sa的人最后因为sql注入死翘翘)

6.关键数据保护
对待关键数据要加倍小心,可以使用加密,区别对待的方法

7.日志
记录日志吧,有条件的话,记得详细点,特别是关键操作,再有条件的,对日志做个备份或者记在其他server上。

8.代码编写
使用的模板,框架,技术本身有问题吗?
在服务器端做输入过滤,客户端的输入过滤是无效的。过滤特殊字符,数据类型,数据长度。***是只接受合法输入,而不是拒绝特殊情况。

说的太简单了就比较空,光关于某一点都有很多可以说。恩,不管怎样,给大家提供个参考吧,欢迎大家补充。

一个不错的资源来自微软:
http://msdn.microsoft.com/en-us/library/ms994921.aspx
不光对于.NET架构的,对于其他web应用程序也有一定参考价值。