Django CSRF TOKEN具体生成和验证算法
2017-01-20 16:19:08 0 举报
Django中的CSRF(跨站请求伪造)保护机制是通过生成和验证CSRF令牌来实现的。在每个表单中,Django会自动添加一个隐藏的字段,即CSRF令牌。当用户提交表单时,服务器会验证该令牌是否与用户提交的数据中的令牌相匹配。如果匹配成功,则认为该请求是合法的,否则认为是非法的。 CSRF令牌的生成算法是基于用户的session id和时间戳等信息进行加密计算得到的。每次用户访问网站时,服务器都会为该用户生成一个新的CSRF令牌。验证算法则是将用户提交的CSRF令牌与服务器端存储的令牌进行比较,如果一致则通过验证。
作者其他创作
大纲/内容
取CHARS[每个数值],得到csrf_secret
函数参数token
ALS
26,10,16
随机生成长度与csrf_secret相等的随机串salt
salt与cipher组成token
Akq
_unsalt_cipher_token(token)函数
aBC
0,27,28
_salt_cipher_secret(csrf_secert)函数
备注:CHARS是这一串字符串:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
26,37,44
token:aBCALS
取各个字母在CHARS的索引
aBCALS
把token分成同长度两半,前一半aBC是salt,后一半是cipher
csrf_secret: Akq
函数参数csrf_secret
两两相减,再mod len(CHARS)。如:(26-0) mod len(CHARS) = 26。另注负数取模:-2 mod 64 = 62
取CHARS[每个数值 mod len(CHARS)],组成cipher值 ALS
两两相加,如26+0=26
0 条评论
下一页