|
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应用程序也有一定参考价值。 |
|