sessionId安全性

session id 安全性问题

最一般的方法是自己管理session id

1. 用户login后,在后台加密出一个accessToken,并返回给用户。

2. 客户端接收到accessToken,可以将它存起来,web的话可以存在session storage,手机也可以保存accessToken,用于单点登录。

3. 同时,服务器会保存一份accessToken的相关信息在服务器,如:deviceId,IP,accessToken,loginTime,logoutTime,userId,userAgent等等。

3. 每次请求API都会将accessToken提交给服务器,服务器比较accessToken,看是否正确是否超时,如果成功就执行业务。

用Spring Security(适合CMS)

1. session id 由Spring Security创建。

2. 然后发送给客户端,然后保存在浏览器的cookie中。

3. 每次请求都将cookie发送到服务器,然后检查正确性和是否超时。

4. 这种方法要在Tomcat设置httponly和secure。(防止XSS攻击)

HttpOnly:

如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。

配置:

tomcat/conf/ 下找到context.xml修改<Context useHttpOnly="true">

secure

当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。

配置:(一般和HTTPS的证书一起使用)

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" 

               keystoreFile="/usr/local/tomcat7/server.keystore"

               keystorePass="Envisi0n"  />

猜你喜欢

转载自youyu4.iteye.com/blog/2335405