在服务器端,成功登录后,我执行:Servlet的会话cookie篡改和安全
HttpServletRequest request = this.getThreadLocalRequest();
HttpSession session = request.getSession();
session.setAttribute("user", subject.getUser().getId());
session.setAttribute("logged", true);
我再假设该用户登录当用户导航到一个安全的网页,以。保存或删除我的数据库中的记录,我运行此代码。
HttpServletRequest request = this.getThreadLocalRequest();
HttpSession session = request.getSession();
if (session.getAttribute("user")!=null && session.getAttribute("logged"))
{
//delete a record using the authority of the user.
}
我担心的是客户端可以用不同的用户ID来篡改浏览器cookie。数据库请求将以不同的用户启动,跳过登录过程。
Java会话能识别篡改,或者我应该用数字包括该行
session.setAttribute("signature", hash(secretkey + subject.getUser().getId());
然后验证签名更改数据库之前有效签署了会议。
if (session.getAttribute("signature").equals(hash(secretkey + session.getAttribute("user"))
{
//delete a record using the authority of the user.
}
即使您对Java会话如何工作的假设是错误的(正如下面的答案中所解释的),我赞赏你对安全性的看法。你绝对不应该相信客户发给你的任何东西。 –