`
san_yun
  • 浏览: 2638879 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

在Cookie中使用Base64存储二进制的问题

 
阅读更多

项目中需要将压缩后的二进制数据存入cookie的value中。如果直接将二进制数据存入是不行的,因为cookie规范中规定了一些字符不允许存入:

引用

With Version 0 cookies, values should not contain white space, brackets, parentheses, equals signs, commas, double quotes, slashes, question marks, at signs, colons, and semicolons. Empty values may not behave the same way on all browsers.


对于二进制数据,无法(也不应该)控制数据内容。所以在写入和读出cookie数据前后,应该先经过编解码过程,将二进制数据编码存储。

比较通用的做法是进行BASE64编码,但是当原始数据长度不能被3整除时,BASE64会在结尾处补1~2个等号,而等号在cookie规范中是不允许出现的,这里是问题说明:
http://stackoverflow.com/questions/2090009/what-text-encoding-scheme-do-you-use-when-you-have-binary-data-that-you-need-to/2090066#2090066

所以可以选用某种BASE64的变种,它将BASE64中定义的'+','/','='转换为其它不会造成分隔符污染的字符:
http://en.wikipedia.org/wiki/Base64#URL_applications

这里我使用对于URL友好的一种BASE64编码UrlBase64Encoder,以下是这个包的maven依赖声明:

引用

<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>

 

分享到:
评论

相关推荐

    base64.dll

    2. **Web开发**:在HTTP协议中,由于其纯文本特性,Base64编码常用于在URL、Cookie或HTTP头中传递二进制数据。 3. **证书和签名**:在数字证书和XML签名中,Base64用于表示公钥和私钥。 4. **图片嵌入**:在HTML中,...

    第十七节 Cookie Base64注入 -01

    在Web应用安全中,Base64编码经常被用于 Cookie 的传输和存储。但是,攻击者也可以利用 Base64 编码来进行恶意攻击,例如 Cookie Base64 注入攻击。 Cookie Base64 注入攻击是一种类型的 SQL 注入攻击,攻击者可以...

    用base64加解密cookie的PHP代码类

    Base64是一种将二进制数据编码为ASCII字符串的方法,便于在网络传输中使用。 首先,我们需要理解Cookie的基本概念。Cookie是由服务器发送到用户的浏览器并存储在本地的小型文本文件。它们可以用来存储用户偏好、...

    用base64加解密cookie的PHP代码类.zip

    Base64是一种字符编码方式,它将任意二进制数据转换为ASCII字符串,方便在网络上传输。在PHP中,可以使用`base64_encode()`和`base64_decode()`函数来实现Base64的编码和解码。 然而,Base64本身并不提供加密功能,...

    图片与Base64加密码字符串相互转换工具

    2. Base64编码:将图片二进制数据转换成ASCII字符串,方便在网络上传输或存储。 3. 加密算法:如AES、DES等,用于对Base64编码后的字符串进行加密,提高数据的安全性。 4. 密码学:密码的生成、验证与管理,可能涉及...

    C/C++实现的BASE64算法,100%好用

    本文将深入探讨C/C++实现的BASE64算法,这是一种常见的数据编码方法,用于将二进制数据转换为ASCII字符串,以便在网络上传输或者在文本格式中存储。 首先,我们需要了解BASE64的基本原理。BASE64是一种基于64个字符...

    BASE64Encorder,Decorder

    在IT领域,BASE64编码是一种常见的数据编码方式,它将二进制数据转换为可打印的ASCII字符,便于在网络上传输或者存储。这个压缩包包含的“BASE64Encoder”和“BASE64Decoder”是Java平台早期提供的用于BASE64编码和...

    jquery > base64

    3. Cookie管理:由于Cookie只能存储ASCII字符串,Base64编码可以用来编码二进制数据,如用户的会话信息。 4. API接口:在API请求中,Base64编码常用于密码或敏感数据的传输,提供一定的安全性。 总结,jQuery与...

    Base64 加码解码器

    Base64编码是一种广泛使用的数据编码方式,尤其在互联网通信中,用于将二进制数据转化为可以在ASCII字符集内传输的文本格式。这种编码方法基于64个可打印的ASCII字符,包括大写字母、小写字母、数字以及"+"和"/"两个...

    jquery.base64.js.7z

    3. 存储:在浏览器本地存储(如localStorage或cookie)中,Base64编码可以确保数据的兼容性和安全性。 4. 加密:虽然Base64本身不提供安全加密,但可以作为加密算法的一部分,如对密钥进行编码。 总之,`jquery....

    H5实现pdf在线预览.rar

    Base64是一种将二进制数据编码为ASCII字符串的方法,使得二进制数据可以在纯文本环境中传输和显示。转换过程包括读取PDF文件内容,然后使用特定算法将其转换为Base64字符串,这个字符串可以安全地嵌入到HTML或...

    cookie机制

    - **value**:Cookie的值,如果包含Unicode字符需要进行编码,如果是二进制数据则需进行BASE64编码。 - **maxAge**:Cookie的有效期,单位为秒。超过这个时间后Cookie会失效。 - **secure**:标记是否仅通过安全协议...

    常用工具类集合:Base64、MD5、SHA、RSA、Json、HttpClient、特殊数据格式验证等.zip

    1. **Base64**:Base64是一种将二进制数据编码为ASCII字符串的方法,常用于在网络上传输非ASCII字符或隐藏敏感信息。在Java中,`java.util.Base64`类提供了Base64编码和解码的功能,方便我们在邮件、URL、XML等场景...

    前端js加密大礼包.zip

    虽然Base64编码本身不具备安全性,但它可以将二进制数据嵌入到纯文本中,方便在网络中传递。然而,由于Base64编码后的数据比原始二进制数据更大,所以不适用于传输大量数据。 这些加密方法在前端开发中各有其应用...

    jQuery加密密码到cookie的实现代码

    Base64是一种简单的编码机制,将二进制数据转化为ASCII字符串,便于在网络传输或存储时使用。虽然Base64不是一种安全的加密算法,但它可以防止明文密码直接暴露在源代码或网络传输过程中。然而,在实际的生产环境中...

    layui扩展第三方插件js包

    8. **jquery.base64.js**:Base64是一种编码方式,常用于在不支持二进制传输的环境(如HTTP)中传递二进制数据。这个插件可能是为了方便在前端进行Base64编码和解码。 9. **jquery.cookie.js**:这个插件用于操作...

    编程英语(单词有音标).docx

    22. 二进制(binary):二进制是指在编程中使用 0 和 1 两个数字来表示数据的编码方式。 23. 二分查找(binary search):二分查找是指在编程中使用二进制树来快速查找某个元素的算法。 24. 二叉树(binary tree)...

    pycurl-7.43.0.2-cp36-cp36m-win_amd64.whl

    安装PyCurl-7.43.0.2-cp36-cp36m-win_amd64.whl非常简单,只需在命令行中使用pip命令,如下所示: ```bash pip install pycurl-7.43.0.2-cp36-cp36m-win_amd64.whl ``` 一旦安装成功,你就可以在Python代码中导入...

    Vue+element+cookie记住密码功能的简单实现方法

    Base64是一种简单的编码方式,可以将二进制数据转换为可打印的字符,但安全性较低。CryptoJS则是一个JavaScript加密库,提供了多种加密算法,如SHA、MD5等,更适合用来加密敏感信息如密码。 5. **Vue.js的事件绑定...

Global site tag (gtag.js) - Google Analytics