`
blueswind8306
  • 浏览: 126961 次
  • 来自: ...
社区版块
存档分类
最新评论

在Cookie中存储二进制数据的方法

阅读更多
项目中需要将压缩后的二进制数据存入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>

分享到:
评论

相关推荐

    在浏览器中使用flash 存储客户端数据

    LSOs类似于浏览器的Cookie,但它们可以存储更多的数据(最大可达到100KB,具体取决于浏览器设置)并且不局限于文本,还可以存储二进制数据。这种方式在处理需要大量或复杂数据的应用场景中比Cookie更有效。 描述中...

    用base64加解密cookie的PHP代码类

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

    序列化保存对象到Cookie中

    在.NET框架中,我们有多种序列化方式,如XML序列化、JSON序列化、二进制序列化等。对于保存到Cookie的情况,通常会选择JSON序列化,因为它生成的数据更小且易于阅读。 **ASP.NET中的Cookie管理**: 在ASP.NET中,`...

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

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

    base64.dll

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

    jquery > base64

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

    cookie机制

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

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

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

    学生档案管理

    在“学生档案管理”系统中,我们主要关注的是利用Java技术来实现一套完整的档案管理系统,该系统涵盖了用户登录注册、学生档案信息的管理以及界面的美化功能,如闪屏效果。下面将详细阐述这些关键知识点。 首先,**...

    前端js加密大礼包.zip

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

    第十七节 Cookie Base64注入 -01

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

    Barberry:具有缓存功能的二进制内容存储和转换服务

    每个Web项目都具有不同的二进制数据来托管和处理:图像,PDF等。在大多数情况下,这些文件应以不同的方式转换: 图片:调整大小和格式 PDF到图像 打开Office模板以获取MS Office文档和PDF 解决方案 该应用程序可以...

    asp.net序列化cookie-vs2010版本

    在ASP.NET中,序列化是一个关键概念,它涉及到将对象的状态转换为可以存储或传输的数据格式,如XML、JSON或二进制。在本案例中,我们将探讨ASP.NET中的Cookie序列化,特别是在Visual Studio 2010环境下。 Cookie是...

    Web数据存储浅析 Cookie、UserData、SessionStorage、WebSqlDatabase

    与传统的数据库类似,WebSqlDatabase支持事务处理,可以存储图片、音乐、视频等二进制数据。它的存储空间也比Cookie和SessionStorage大得多,可以达到50MB甚至更多。使用WebSqlDatabase进行数据存储,需要执行SQL...

    cookie 参考配置

    例如,在提供的数据中可以看到有些Cookie被标记为`TRUE`或`FALSE`,这通常意味着是否为HTTP Only Cookie,即只能通过HTTP协议访问而不能通过JavaScript脚本读取,这样可以防止XSS(跨站脚本攻击)。 此外,还需要...

    Java WEB开发中的中文乱码问题解决方法.pdf

    在这个过程中,如果客户端、服务器端和数据库之间的编码不一致,就可能在数据传输、处理和存储过程中产生乱码。 解决中文乱码的方法通常有以下几种: 1. 设置项目的字符编码:在Web项目的配置文件中,如web.xml中...

    asp.net 的Session数据库存储方式

    在数据库中,Session数据通常是以二进制格式存储的,这可以包括任何类型的数据,比如字符串、数字或复杂对象。为了提高效率,ASP.NET框架还会对Session数据进行压缩和加密。 ### 总结 在ASP.NET中使用数据库存储...

    more.pdf

    - `ArrayBuffer`用于处理原始二进制数据,是处理大文件和音频/视频数据的基础。 - `Blob`和`File`对象代表二进制数据块,常用于文件操作和网络传输。 - `TextDecoder`和`TextEncoder`用于二进制数据与文本之间的...

    BASE64Encorder,Decorder

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

    信息采集,c#.net能够抓取页面中的数据

    它提供了DownloadString、DownloadData等方法,能方便地获取网页的文本或二进制数据。 5. **异步编程**:考虑到网络请求可能会有延迟,C#.NET的异步编程模型(async/await)是必要的。这样可以避免阻塞主线程,提高...

Global site tag (gtag.js) - Google Analytics