cookie防篡改
2)WebSphere LTPA 生成原理
- 用户信息,格式为u:user\:<RealmName>/<UserDN>,如:u:user\:VGOLiveRealm/CN=squallzhong,O=VGOLive Technology
- 过期时间
- 签名信息,如:
u:%Cy2CAeru5kEElGj0hrvYsKW2ZVsvvcu6Un573aeX55OO4G3EMYWc0e/ZbqDp1z7MS+dLzniuUH4sYWCMpnKdm7ZGabwmV+WcraBl+y+yzwcl722gHVMOnDZAW7U3jEay9Tk2yG4yXkMWU+617xndpVxke2jtS5wIyVVM3q7UDPw=
3)WebSphere LTPA Cookie 的解析
以下代码为解析从 WebSphere 或 Domino 发送过来的 LTPAToken Cookie。以Java为例:
01…02 // LTPA 3DES 密钥03 String ltpa3DESKey = "7dH4i81YepbVe+gF9XVUzE4C1Ca5g6A4Q69OFobJV9g=";04 // LTPA 密钥密码05 String ltpaPassword = "Passw0rd";06 try {07 // 第一步,获得加密key08 byte[] secretKey = getSecretKey(ltpa3DESKey, ltpaPassword);09 // 第二步,使用加密key解密ltpa Cookie10 String ltpaPlaintext = new String(decryptLtpaToken(tokenCipher,11 secretKey));12 displayTokenData(ltpaPlaintext);13 } catch (Exception e) {14 System.out.println("Caught inner: " + e);15 }16…17 //获得安全Key18 private static byte[] getSecretKey(String ltpa3DESKey, String password)19 throws Exception {20 // 使用SHA获得key密码的hash值21 MessageDigest md = MessageDigest.getInstance("SHA");22 md.update(password.getBytes());23 byte[] hash3DES = new byte[24];24 System.arraycopy(md.digest(), 0, hash3DES, 0, 20);25 // 使用0替换后4个字节26 Arrays.fill(hash3DES, 20, 24, (byte) 0);27 // BASE64解码 ltpa3DESKey28 byte[] decode3DES = Base64.decodeBase64(ltpa3DESKey.getBytes());29 // 使用key密码hash值解密已Base64解码的ltpa3DESKey30 return decrypt(decode3DES, hash3DES);31 }32 //解密LtpaToken33 public static byte[] decryptLtpaToken(String encryptedLtpaToken, byte[] key)34 throws Exception {35 // Base64解码LTPAToken36 final byte[] ltpaByteArray = Base64.decodeBase64(encryptedLtpaToken37 .getBytes());38 // 使用key解密已Base64解码的LTPAToken39 return decrypt(ltpaByteArray, key);40 }41 // DESede/ECB/PKC5Padding解方法42 public static byte[] decrypt(byte[] ciphertext, byte[] key)43 throws Exception {44 final Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");45 final KeySpec keySpec = new DESedeKeySpec(key);46 final Key secretKey = SecretKeyFactory.getInstance("TripleDES")47 .generateSecret(keySpec);48 cipher.init(Cipher.DECRYPT_MODE, secretKey);49 return cipher.doFinal(ciphertext);50 }51…解析出来的LTPAToken信息以%分隔。
来源:http://www.cnblogs.com/zhengyun_ustc/archive/2012/11/17/topic3.html
cookie防篡改的更多相关文章
- 网站如何防Session冒名顶替和cookie防篡改
做网站难免要面对安全性的问题,诸如sql注入拉,cookie冒名拉,等等,sql注入算是老生常谈,翻翻旧账有不少优秀的帖子在说明这个问题,所以我们来说说Session冒名顶替的风险以及应对的办法. 首 ...
- Cookie防篡改机制
一.为什么Cookie需要防篡改 为什么要做Cookie防篡改,一个重要原因是 Cookie中存储有判断当前登陆用户会话信息(Session)的会话票据-SessionID和一些用户信息. 当发起一个 ...
- Cookie防伪造防修改 电商课题:cookie防篡改
主要防止非法用户修改cookie信息,以及cookie的超时时间 传统cookie存储,Cookie(name, value),value很容易就被篡改. 防修改cookie存储,Cookie(nam ...
- cookie安全隐患及防篡改机制
Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...
- Spring Boot如何设计防篡改、防重放攻击接口
Spring Boot 防篡改.防重放攻击 本示例要内容 请求参数防止篡改攻击 基于timestamp方案,防止重放攻击 使用swagger接口文档自动生成 API接口设计 API接口由于需要供第三方 ...
- JavaScript中的防篡改对象
由于JavaScript共享的特性,任何对象都可以被放在同一环境下运行的代码修改. 例如: var person = {name:"caibin'} person.age = 21; 即使第 ...
- WebApi系列~安全校验中的防篡改和防复用
回到目录 web api越来越火,因为它的跨平台,因为它的简单,因为它支持xml,json等流行的数据协议,我们在开发基于面向服务的API时,有个问题一直在困扰着我们,那就是数据的安全,请求的安全,一 ...
- 01WebApi防篡改机制---HMAC机制
防篡改,顾名思义就是防止有人恶意篡改请求数据URL以达到恶意攻击的目的,那要怎么才能实现这样的目的呢? 很简单,将要请求的数据加上合作号.合作Key按规则组织成一个字符串,获取对应的MD5摘要,然后将 ...
- WebAPI 用户认证防篡改实现HMAC(二)签名验证 AbsBaseAuthenticationAttribute--转
public class ActionFilter : ActionFilterAttribute { public override void OnActionExecu ...
随机推荐
- scanf(),fscanf的详解
我们这里只讨论fscanf(或者scanf)的格式,因为这些细节在其他贴里并没有涉及,阅读此文,你可以少走一些弯路.只讲结果,深层原因并不分析. FILE *pFile:float x1; char ...
- PendingIntent的Flags
PendingIntent是一个Intent的描述.包装,给予了这个PendingIntent 的组件在指定的事件发生或指定的时间到达时启动Activty.Service或者Broadcast. 根据 ...
- 利用WITH AS 优化FILTER
SQL> explain plan for select * from fxqd_list_20131115_new where (acct_no, oper_no, seqno, trans_ ...
- luoguP2265 路边的水沟
题目:http://www.luogu.org/problem/show?pid=2265 题解:ans=C(n+m,n)%p 求一下逆元就行 代码: #include<cstdio> # ...
- Lowest Common Ancestor of a Binary Tree——Leetcode
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...
- ssh互信自动化脚本(待更新)
1.建立一个ip,端口,用户,密码列表 [root@localhost shell-key]# cat arg_list.txt 172.16.56.215 172.16.56.215 172.16. ...
- 青云QingCloud业内率先支持云端全面透明代理功能 | SDNLAB | 专注网络创新技术
青云QingCloud业内率先支持云端全面透明代理功能 | SDNLAB | 专注网络创新技术 青云QingCloud业内率先支持云端全面透明代理功能
- 将证书写到jre中
第一步: 取得要导入的证书. 第二步: 开启CMD,进入Java/jre6/lib/security 目录下. 第三步: 执行以下命令: keytool -import -alias cacerts ...
- 使用EF连接现有数据库
新建个项目---在项目内添加新建项-- 选择ADo.NET实体数据模型(我的软件vs2012 上面之所以有两个ADo.NET实体数据模型 是因为上面一个EF4.0 下面一个EF5.0 ) 在实际操作中 ...
- java_method_readFile读取文件文本txt
/** * @Title: TxtAndCsvUtils.java * @Package cn.com.qmhd.tools * @Description: TODO(读取txt和CSV文档) * @ ...