编码java Cookie值

joy*_*nes 7 java cookies encoding

您应该如何编码Java Cookie对象的实际值?我不能传递'='之类的字符或US-ASCII之外的任何字符.

/ Br joynes

sle*_*ske 8

它并不重要,但通常Base64应该运行良好.

警示:

这听起来像是要在cookie中存储任意设置.这通常不是一个好主意,因为cookie(像所有客户端输入一样)是不可信的.考虑将数据服务器端存储在某个生成的(随机!)标识符下,并将其放入cookie中.这样人们就无法绕过访问限制或通过操纵的cookie将任意数据注入您的系统.

如果您无法使用此方法,请将cookie值视为不受信任的输入,并照常验证.

编辑:

Base64不合适,因为它使用"=",Java cookie不支持.而是使用

java.net.URLEncoder.encode
Run Code Online (Sandbox Code Playgroud)

仅使用适合cookie的字符.


ZZ *_*der 5

如果您有不安全的字符,请使用十六进制或URL安全版本的Base64对其进行编码.常规Base64不能用作cookie值.较旧的Tomcat用于允许非法字符,如"=",但较新的版本现在开始强制执行cookie规则.