关于web应用程序安全的思考(一)
2008-11-26 13:35:59 来源:WEB开发网由上可知﹐web服务器对于请求方的识别能力是很低的。因此作为web应用程序安全管控的唯一依据就只能是request的url了﹐因为只有它才是真实的﹐而我们进行安全管控的最终目的也就是
判断这个请求方是否拥有这个url的权限(即授权)
这就是我抽象出来的web安全管控的本质﹐依据这点﹐我们就可以把web安全管控和业务系统进行解耦。即在request到达其请求的url之前﹐先对这个url和请求方进行权限验证﹐如果通过﹐我们就放它过去﹐什么都不做﹐如果不通过﹐我们就可以向客户端发送相关的拒绝信息﹐并不让web服务器真正执行到那个url﹐完成安全管控。
在web安全管控中﹐授权的除了要识别授权的客体(URL)之外﹐我们还必须识别授权的主体﹐即请求方的认定﹐也就是常说的认证机制。
由于http协议无状态的特点﹐每次request时﹐web服务器都无法识别这个请求是否和上次的请求是否相同。因此认证机制在某种程度上来说其实相当困难。
曾经遇到过通过IP来认证的﹐先不说这种机制对于web可以anywhere访问是一种倒退﹐单是那种IP更改﹐欺骗或通过Proxy访问就无法适用了。
现在最多的做法还是通过cookie和session来完成的。
不过最好还是清楚一下cookie和session的原理﹕
Cookie﹕cookie其实也是http request header的一部分﹐我们可以把任何值当作cookie发给web服务器。
至于Session,不知道大家有没有看过.net的session实现机制﹐每次请求后﹐.net会写入一个session_id的cookie到客户端﹐这样在下次客户再请求时﹐提取这个cookie来识别。剩下的就和cookie一样了。
大家可以看一下我上面这个例子﹐在那支request请求的程式中加入相关的session_id的cookie﹐你会发现程式是无法识别是不是真正的session的
更多精彩
赞助商链接