文章目录

  • 介绍
    • 实现方式
    • 脚本语言
  • MinDoc 安全机制
    • CSRF 防御
      • MinDoc 采用token检测法
      • 图片验证码
  • 模拟登录实战
  • 结语

介绍

  • GIT文档同步Mindoc - Mindoc模拟登陆部分

实现方式

  • 跨站伪造用户的请求,模拟用户的操作

脚本语言

PHP

MinDoc 安全机制

CSRF 防御

MinDoc 采用token检测法

token就是服务端返回给客户端类似sessionid那样一长串的类值(长是为了防暴力猜解)。csrf依赖于浏览器该问链接时自动对应网站的cookie带上,token不放cookie(一般form表单加个hidden属性的input标签来存放)csrf就没法获取token,这样我们就可以通过检测发送过来的数据包中是否有正确的token值来决定是否响应请求。

图片验证码

在MinDoc,配置管理页面,可以关闭验证码

模拟登录实战

  • 打开登陆页面获取初始的cookie信息
//登陆页面域名
$url = "http://xxxxxxx.com/login";
//登录页面cookie存放地址在这里插入代码片
$get_cookie = "/xxx/getlogin.cookie";
//登录后cookie存放地址
$set_cookie = "/xxxxxx`在这里插入代码片`/login.cookie";
//获取登录页面cookie内容
$contents = get_content($url, $get_cookie);//从cookie中提取 _xsrf参数, 也可以从html内容中通过正则截取
$data = extractCookies($cookie_contents);
foreach ($data as $key => $value) {$list = explode("|", $value['value']);$xsrf = base64_decode($list[0]);
}$post = array('_xsrf' => $xsrf,//验证token'account' => 'account',//账户'password' => 'psd',//密码'is_remember' => 'yes',保持登录
);
//模拟登陆
$state = login_post($url, $get_cookie, $post, $set_cookie);
var_dump($state)$state = login_post($url, $get_cookie, $post, $set_cookie);
/*** @param $url  请求地址* @param $cookie cookie存放路径* @return mixed*/
function get_content($url, $cookie){$ch = curl_init(); //初始化curl模块curl_setopt($ch, CURLOPT_URL, $url); //登录提交的地址curl_setopt($ch, CURLOPT_HEADER, 0); //是否显示头信息curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //是否自动显示返回的信息curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);//设置cookie信息保存在指定的文件夹中$rs = curl_exec($ch); //执行curl转去页面内容curl_close($ch);return $rs; //返回字符串
}/*** @param $url 请求地址* @param $get_cookie 请求携带的cookie路径* @param $post 请求参数* @param $set_cookie 保存cookie的路径*/
function login_post($url, $get_cookie, $post, $set_cookie){$ch = curl_init(); //初始化curl模块curl_setopt($ch, CURLOPT_URL, $url); //登录提交的地址curl_setopt($ch, CURLOPT_HEADER, 0); //是否显示头信息curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); //是否自动显示返回的信息curl_setopt($ch, CURLOPT_COOKIEFILE, $get_cookie);curl_setopt($ch, CURLOPT_COOKIEJAR, $set_cookie);//设置cookie信息保存在指定的文件夹中curl_setopt($ch, CURLOPT_POST, 1); //以POST方式提交curl_setopt($ch, CURLOPT_POSTFIELDS, $post);//要执行的信息curl_exec($ch); //执行CURL
//        var_dump(curl_exec($ch));curl_close($ch);
}/*** @param $string* @return array*/
function extractCookies($string) {$lines = explode(PHP_EOL, $string);foreach ($lines as $line) {$cookie = array();// detect httponly cookies and remove #HttpOnly prefixif (substr($line, 0, 10) == '#HttpOnly_') {$line = substr($line, 10);$cookie['httponly'] = true;} else {$cookie['httponly'] = false;}// we only care for valid cookie def linesif (strlen($line) > 0 && $line[0] != '#' && substr_count($line, "\t") == 6) {// get tokens in an array$tokens = explode("\t", $line);// trim the tokens$tokens = array_map('trim', $tokens);// Extract the data$cookie['domain'] = $tokens[0]; // The domain that created AND can read the variable.$cookie['flag'] = $tokens[1];   // A TRUE/FALSE value indicating if all machines within a given domain can access the variable.$cookie['path'] = $tokens[2];   // The path within the domain that the variable is valid for.$cookie['secure'] = $tokens[3]; // A TRUE/FALSE value indicating if a secure connection with the domain is needed to access the variable.$cookie['expiration-epoch'] = $tokens[4];  // The UNIX time that the variable will expire on.   $cookie['name'] = urldecode($tokens[5]);   // The name of the variable.$cookie['value'] = urldecode($tokens[6]);  // The value of the variable.// Convert date to a readable format$cookie['expiration'] = date('Y-m-d h:i:s', $tokens[4]);// Record the cookie.$cookies[] = $cookie;}}return $cookies;}

结语

通过以上代码,就能拿到用户登录后的cookie值,请求的时候携带该cookie,就可以模拟用户请求啦

GIT文档同步MinDoc - MinDoc模拟登陆相关推荐

  1. 推荐一款接口文档在线管理系统-MinDoc

    项目简介 MinDoc 是一款针对IT团队开发的简单好用的文档管理系统. MinDoc 的前身是 SmartWiki 文档系统.SmartWiki 是基于 PHP 框架 laravel 开发的一款文档 ...

  2. 第16课 “远程 Git文档库” 的基础操作

    16-1  "远程Git文档库"  的功能 如果  "本地Git文档库" 和  "远程Git文档库"  是存储在不同的计算机中,它们之前传送 ...

  3. 版本控制系统GIT文档

    版本控制系统GIT文档 李达 20180629 引用博客教程+实践总结 目录 1.     版本控制系统... 2 1.1.      简介... 2 1.2.      常见的版本控制器... 3 ...

  4. HbuilderX 左侧项目栏文件位置和打开的文档同步(对应显示) - 设置篇

    HbuilderX能像Hbuilder一样,左侧的项目栏文件位置和打开的文档同步,对应显示 设置 · 截图演示:(按图设置即可完成.) 以上就是关于" HbuilderX左侧项目栏文件位置和 ...

  5. 魅色U盘精灵(U盘加密.文档同步.计算机锁定)

    魅色U盘精灵(U盘加密.文档同步.计算机锁定) v1.74 中文绿色版 软件分类:U盘相关 运行环境:XP/2003/Vista/ 软件语言:简体中文 授权方式:免费版 软件大小:72KB 更新时间: ...

  6. 企业微信共享文档同步和下载异常

    企业微信共享文档同步和下载异常,下载失败 首先排除网络问题,文件问题和磁盘空间问题后 共享盘中的文件可以读取,在线编辑,就是无法同步,无法下载 进入文档在线编辑-随便写点-退出编辑-重新下载文档即可

  7. 第3课 把文件存入Git文档库

    3-1  排除不需要加入文档库的文件 Git追踪文件的方式.Git会将文件和文件夹分成以下三类: 1.   被追踪的(tracked): 2.   忽略的(ignored): 3.   不被追踪的(u ...

  8. Office 365 IT Professional—— 如何将Office 365中的文档同步到客户端,加强协同管理

    博客地址:http://blog.csdn.net/shelleyliu0415 部分企业用户习惯使用Web Dav方式,将网站上的数据与客户端进行同步管理,那么为加强企业协作沟通模式,减少IT日常维 ...

  9. 计算机一级文档题,计算机一级模拟题

    计算机 2008第二次一级笔试试题A卷 一.单选题 1.计算机的发展大体可(按其组成的器件)分为()阶段. A.六 B.五 C.四 D.三 2.计算机中的运算器能进行(). A.加法和减法运算 B.算 ...

  10. MinDoc 接口文档在线管理系统

    MinDoc 是一款针对IT团队开发的简单好用的文档管理系统. MinDoc 的前身是 SmartWiki 文档系统.SmartWiki 是基于 PHP 框架 laravel 开发的一款文档管理系统. ...

最新文章

  1. 微软推出 AI 开发免费电子书,手把手教你构建智能聊天机器人
  2. linux挂载硬盘简书,linux|挂载硬盘及分区
  3. 腾讯创始人马化腾:14年经验得失总结
  4. jvm-垃圾回收随时都可以STW吗?带你认识安全点和安全区域
  5. Android 反编译apk文件(转)
  6. 韩国企业百强排行榜!
  7. 【抛砖引玉】“技术顾问” —— 老程序员的一个出路。
  8. linux系统下载了qq怎么安装,怎么在linux系统里面安装QQ
  9. .txt文件改成.bat为什么没有反应
  10. 春运首日 广西桂林火车站向旅客“送万福”
  11. dicom格式怎么转换_flv怎么转换成mp4格式?三种最常用的转换方法都在这了!
  12. (MATLAB源代码)SVM多分类
  13. JSONArray.fromObject(); 引入问题
  14. 一些FORK函数的例子
  15. Java开发人员幽默外号,好听的外号绰号 好听幽默绰号大全
  16. Win10找不到便签怎么办 Win10找不到便签解决方法
  17. 第四回:产品创新性思维方法论
  18. 电脑桌面计算机找不到,电脑桌面没有了怎么恢复?电脑桌面没有了的恢复方法...
  19. Win7系统如何在线进行重装?在线一键重装Win7方法
  20. H3C无线控制器双链路备份配置

热门文章

  1. python判断是否为素数_python判断一个数是否为素数
  2. 围棋人机大战属于计算机在什么方面的应用,人民日报评围棋人机大战:胜出的是我们自己...
  3. DHTMLX Grid Crack
  4. bootbox.js中confirm()方法的使用
  5. 英文单词打字练习与学习
  6. 申领电子驾照提示证件照不标准
  7. 六款顶级Wifi无线网络搜索工具盘点
  8. Win11系统开启控制面板会闪退怎么解决?
  9. CSS之BFC(Block Formatting Context)
  10. nifi mysql to mysql_NiFi 实战