zoukankan      html  css  js  c++  java
  • qqzone/tx云登录所用g_tk/x-csrfcode获取

    今天需要获取到txy的某个api接口,但是txy需要登录才能使用,需要g_tk/x-csrfcode,

    这里简单介绍一下g_tk/x-csrfcode:

    由于CSRF的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在cookie中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再运行CSRF攻击。这种数据通常是窗体中的一个数据项。服务器将其生成并附加在窗体中,其内容是一个伪随机数。当客户端通过窗体提交请求时,这个伪随机数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪随机数,而通过CSRF传来的欺骗性攻击中,攻击者无从事先得知这个伪随机数的值,服务端就会因为校验token的值为空或者错误,拒绝这个可疑请求。

    在我们通过登录后会返回一个skey

    而g_tk/x-csrfcode的值是通过skey的计算出来的

    g_tk/x-csrfcode的算法:

    java:

    public class Security {
        public static String GetG_TK(String str) {
            int hash = 5381;
    
            for (int i = 0, len = str.length(); i < len; ++i) {
                hash += ((hash << 5) + (int) (char) str.charAt(i));
            }
    
            return (hash & 0x7fffffff) + "";
        }
    }
    

    JavaScript:

    function getGTK(str) {
        var hash = 5381;
        for (var i = 0,
        len = str.length; i < len; ++i) {
            hash += (hash << 5) + str.charAt(i).charCodeAt();
        }
        return hash & 0x7fffffff;
    }
    
    alert(getGTK("skey"))
    
    

    通过计算即可得出

  • 相关阅读:
    springboot(十)使用LogBack作为日志组件
    springboot(九)文件上传
    django 安装
    macbook使用“终端”远程登录linux主机
    Mac 怎么通过自带终端连接linux服务器
    什么是变量?
    选择最好用的PyCharm IDE
    开发你的第一个Python程序
    Python介绍
    PyCharm 2017 安装教程
  • 原文地址:https://www.cnblogs.com/shook/p/14962086.html
Copyright © 2011-2022 走看看