如何防止操作修改 cookie?
Posted
技术标签:
【中文标题】如何防止操作修改 cookie?【英文标题】:How do I prevent an action from modifying a cookie? 【发布时间】:2012-07-11 13:23:53 【问题描述】:我想确保我的方法不会修改某些 cookie,例如 PLAY_FLASH 和 PLAY_SESSION(为什么?因为bug 785)。
我试过了:
// This method should never modify any PLAY cookie.
public static void doNothingPost() throws InterruptedException
logger.info("Done nothing");
response.cookies.remove("PLAY_FLASH");
response.cookies.remove("PLAY_ERRORS");
response.cookies.remove("PLAY_SESSION");
ok();
好吧,事实证明respone.cookies.remove()
会主动删除一个 cookie(具有过去到期日期的 SetCookie)。我如何告诉 play 不要为特定的 cookie 发送任何 SetCookie 标头? (还是全部?)
【问题讨论】:
也在论坛上:groups.google.com/forum/?fromgroups#!topic/play-framework/… 【参考方案1】: t0 -> 调用 setSession t5 -> 调用 doNothing t10 -> setSession 返回t15 -> doNothing 返回
public static void setSession(String uuid)
Cache.add(uuid, "guven");
response.setCookie("username", "guven");
await(1000);
ok();
public static void doNothing(String sameUUIDWithSetSessionParameter)
String username = Cache.get(sameUUIDWithSetSessionParameter, String.class);
Cache.delete(sameUUIDWithSetSessionParameter);
Logger.info("dn: " + username);
await(1000);
ok();
如果这些连续的ajax调用没有不同的session id,那么忘记uuid参数,直接使用session.getId()
从Cache
获取值
【讨论】:
以上是关于如何防止操作修改 cookie?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 Django 覆盖 sessionid cookie?