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
// 第一步,获得加密key
08
byte
[] secretKey = getSecretKey(ltpa3DESKey, ltpaPassword);
09
// 第二步,使用加密key解密ltpa Cookie
10
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
//获得安全Key
18
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解码 ltpa3DESKey
28
byte
[] decode3DES = Base64.decodeBase64(ltpa3DESKey.getBytes());
29
// 使用key密码hash值解密已Base64解码的ltpa3DESKey
30
return
decrypt(decode3DES, hash3DES);
31
}
32
//解密LtpaToken
33
public
static
byte
[] decryptLtpaToken(String encryptedLtpaToken,
byte
[] key)
34
throws
Exception {
35
// Base64解码LTPAToken
36
final
byte
[] ltpaByteArray = Base64.decodeBase64(encryptedLtpaToken
37
.getBytes());
38
// 使用key解密已Base64解码的LTPAToken
39
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 ...
随机推荐
- Ext.Ajax.request同步请求
导读: ajax分为2种,一种是同步,一种是异步同步:代码执行完了之后才执行后面的代码 异步:代码刚执行,后面的代码就马上接着执行了,不管前面的代码是否执行完异步的情况下,要获得返回信息,就需要在异步 ...
- RemixOS Player 让用户在 Windows 上运行 Android App
http://www.oschina.net/news/77154/remixos-player-windows-andriod-app
- 译文:TransactionScope 与 Async/Await
你可能不知道这一点,在 .NET Framework 4.5.0 版本中包含有一个关于 System.Transactions.TransactionScope 在与 async/await 一起工 ...
- Java 语言中 Enum 类型的使用介绍
Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常 ...
- asp.net生成二维码的方法
asp.net生成二维码的方法 [复制链接] 这个要利用一个Dll文件. 如下 Gma.QrCodeNet.Encoding.dll (105.5 KB, 下载次数: 27) 当然大家也可以直 ...
- 单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网?
单位分配的IP地址和电脑主机绑定了,我想用设置一个无线路由器,让我的笔记本电脑和手机都能上网? 配一个无线路由器就可以实现,将电脑IP配置成自动获取,找条网线一头插路由LAN口(路由器上有标明 ...
- Unity3d 使用DX11的曲面细分
Unity3d surface Shaderswith DX11 Tessellation Unity3d surface shader 在DX11上的曲面细分 I write this articl ...
- C++之函数指针
函数指针常用的有三类 1.指向普通函数的函数指针 2.指向类中静态成员函数的函数指针 3.指向类的成员函数的函数指针 一.指向普通函数的函数指针 #include <iostream> u ...
- UVa 11077 Find the Permutations(置换+递推)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35431 [思路] 置换+递推 将一个排列看作一个置换,分解为k个循 ...
- 细谈Java
重载:相同函数名,不同参数. 重写(覆写):父类和子类之间的,子类重写了父类的方法. java的多态:重载+覆写 1. Main方法: 是public的,也是static,也是void的,参 ...