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 ...
随机推荐
- JVM相关参数配置和问题诊断<转>
原文连接:http://blog.csdn.net/chjttony/article/details/6240457 1.Websphere JVM相关问题诊断: 由JVM引起的Websphere问题 ...
- jQuery&HTML&CSS3实现垂直手风琴折叠菜单方法讲解
在网页制作中我们常常需要折叠式的菜单,在折叠菜单中,手风琴特效的菜单是非常受欢迎,下面就讲解使用jQuery+HTML+CSS3实现垂直手风琴折叠菜单的方法. jQuery实现垂直手风琴折叠菜单示例代 ...
- Android MAVEN项目标准目录结构
1.标准目录结构: src -main –bin 脚本库 –java java源代码文件 –resources 资源库,会自动复制到classes目录里 –fi ...
- YII model模型和登陆详解
模型是 CModel 或其子类的实例.模型用于保持数据以及与其相关的业务逻辑. 模型是单独的数据对象.它可以是数据表中的一行,或者一个用户输入的表单. 数据对象的每个字段对应模型中的一个属性.每个属性 ...
- duck type鸭子类型
在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定.这个概念的名字来源于 ...
- 【POJ】2503 Babelfish
字典树简单题. #include <cstdio> #include <cstring> #include <cstdlib> typedef struct Tri ...
- 一起啃PRML - 1 Introduction 绪论
一起啃PRML - 1 Introduction @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 这一部分主要是介绍一下Pattern Recogni ...
- BZOJ2083: [Poi2010]Intelligence test
2083: [Poi2010]Intelligence test Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 241 Solved: 96[Sub ...
- Selenium 脚本稳定性问题
运行一个星期前升至更久前的脚本,,,出现如下错误提示 elementNotVisibleException was unhandled by user code. 经过询问大侠,说我的脚本不够健全,也 ...
- winphone 开发学习笔记(2)
导航 NavigationService.Navigate(new Uri("xxxx.xaml",UriKind.Relative)) xxx表示要跳转的目标页面 页面和页面导航 ...