建站须知——如何增强网站安全性
author:一佰互联 2019-05-25   click:170

web程序的开发大部分都离不开session,比如用户的登录,注销都要基于session的操作。php提供了一套session操作方法,往往很多开发者认为phpsession是安全的,足够解决用户会话的安全性。其实不然,phpsession仅仅提供了session的操作,并没有安全性辅助,所以需要应用程序开发者自己提供一些机制来增强session的安全性。

众所周知,web是基于http协议的,而http协议是无状态的,一个请求仅对应于一个响应。要保持用户的会话,就需要依赖其他的机制。Cookies是作为http的一个扩展诞生的,其主要用途是弥补http的无状态特性,提供了一种保持客户端与服务器端之间状态的途径,但是由于出于安全性的考虑,有的用户在浏览器中是禁止掉cookie的。这种情况下,状态信息只能通过url中的参数来传递到服务器端,不过这种方式的安全性很差。事实上,按照通常的想法,应该有客户端来表明自己的身份,从而和服务器之间维持一种状态,但是出于安全性方面的考虑,我们都应该明白来自客户端的信息都是不能完全信任的。

session是服务端的机制,每个请求到达服务器,服务器就要对这个请求做判断,如果存在sessionid,就将该请求判定为此sessionid持有者的会话,如果不存在sessionid,则服务器会新建一个sessionid,分配给这个访问者,并将sessionid作为响应返回给客户端,并存放在客户端的cookie中,该客户端下次的请求就包含了该sessionid,以便服务端做出判断。

所以,sessionid一般就当作用户识别的标志。session的安全性就比较重要了。事实上,许多情况下都有可能导致sessionid的泄露。 比如说,如果通过GET数据来传递sessionid的话,就有可能暴露这个敏感的身份信息。因为,有的用户可能会将带有sessionid的链接缓存,收藏或者发送在邮件内容中。Cookies是一种相对来说安全一点的机制,但是用户是可以在客户端中禁止掉cookies!在一些IE的版本中也有比较严重的安全漏洞,比较有名的就是会泄露cookies给一些有安全隐患的邪恶站点。

虽然sessionid很难被猜测出来,但是还是有可能被攻击者使用某些方法获取到,比如抓包。所以,必须采取一些额外的安全措施来防止此类情况在应用程序中发生。我们可以在每次请求中附带一个token,这个token可以由某些固定的http请求头信息加密生成,然后对token进行校验,来判断请求是否合理,从而增强session的安全性。

安全性是相对的,作为开发者,只能尽可能的去提升安全性,而很难保证绝对的安全。所以,安全相关的知识,需要不断积累,实践。

酷站欣赏:

简约大气的宠物医院网站 交互深入人心


现代简约的建筑公司网站 整个网站给人安心舒适的感觉