天天看点

保障Web安全的一些最佳实践

<a href="http://msdn.microsoft.com/zh-cn/library/ms994921.aspx">http://msdn.microsoft.com/zh-cn/library/ms994921.aspx</a>

列了设计,开发,部署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.代码编写

使用的模板,框架,技术本身有问题吗?

在服务器端做输入过滤,客户端的输入过滤是无效的。过滤特殊字符,数据类型,数据长度。最好是只接受合法输入,而不是拒绝特殊情况。

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

一个不错的资源来自微软:

<a href="http://msdn.microsoft.com/en-us/library/ms994921.aspx">http://msdn.microsoft.com/en-us/library/ms994921.aspx</a>

不光对于.NET架构的,对于其他web应用程序也有一定参考价值。

上一篇: freeipa