GIT文档同步MinDoc - MinDoc模拟登陆
文章目录
- 介绍
- 实现方式
- 脚本语言
- 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模拟登陆相关推荐
- 推荐一款接口文档在线管理系统-MinDoc
项目简介 MinDoc 是一款针对IT团队开发的简单好用的文档管理系统. MinDoc 的前身是 SmartWiki 文档系统.SmartWiki 是基于 PHP 框架 laravel 开发的一款文档 ...
- 第16课 “远程 Git文档库” 的基础操作
16-1 "远程Git文档库" 的功能 如果 "本地Git文档库" 和 "远程Git文档库" 是存储在不同的计算机中,它们之前传送 ...
- 版本控制系统GIT文档
版本控制系统GIT文档 李达 20180629 引用博客教程+实践总结 目录 1. 版本控制系统... 2 1.1. 简介... 2 1.2. 常见的版本控制器... 3 ...
- HbuilderX 左侧项目栏文件位置和打开的文档同步(对应显示) - 设置篇
HbuilderX能像Hbuilder一样,左侧的项目栏文件位置和打开的文档同步,对应显示 设置 · 截图演示:(按图设置即可完成.) 以上就是关于" HbuilderX左侧项目栏文件位置和 ...
- 魅色U盘精灵(U盘加密.文档同步.计算机锁定)
魅色U盘精灵(U盘加密.文档同步.计算机锁定) v1.74 中文绿色版 软件分类:U盘相关 运行环境:XP/2003/Vista/ 软件语言:简体中文 授权方式:免费版 软件大小:72KB 更新时间: ...
- 企业微信共享文档同步和下载异常
企业微信共享文档同步和下载异常,下载失败 首先排除网络问题,文件问题和磁盘空间问题后 共享盘中的文件可以读取,在线编辑,就是无法同步,无法下载 进入文档在线编辑-随便写点-退出编辑-重新下载文档即可
- 第3课 把文件存入Git文档库
3-1 排除不需要加入文档库的文件 Git追踪文件的方式.Git会将文件和文件夹分成以下三类: 1. 被追踪的(tracked): 2. 忽略的(ignored): 3. 不被追踪的(u ...
- Office 365 IT Professional—— 如何将Office 365中的文档同步到客户端,加强协同管理
博客地址:http://blog.csdn.net/shelleyliu0415 部分企业用户习惯使用Web Dav方式,将网站上的数据与客户端进行同步管理,那么为加强企业协作沟通模式,减少IT日常维 ...
- 计算机一级文档题,计算机一级模拟题
计算机 2008第二次一级笔试试题A卷 一.单选题 1.计算机的发展大体可(按其组成的器件)分为()阶段. A.六 B.五 C.四 D.三 2.计算机中的运算器能进行(). A.加法和减法运算 B.算 ...
- MinDoc 接口文档在线管理系统
MinDoc 是一款针对IT团队开发的简单好用的文档管理系统. MinDoc 的前身是 SmartWiki 文档系统.SmartWiki 是基于 PHP 框架 laravel 开发的一款文档管理系统. ...
最新文章
- 微软推出 AI 开发免费电子书,手把手教你构建智能聊天机器人
- linux挂载硬盘简书,linux|挂载硬盘及分区
- 腾讯创始人马化腾:14年经验得失总结
- jvm-垃圾回收随时都可以STW吗?带你认识安全点和安全区域
- Android 反编译apk文件(转)
- 韩国企业百强排行榜!
- 【抛砖引玉】“技术顾问” —— 老程序员的一个出路。
- linux系统下载了qq怎么安装,怎么在linux系统里面安装QQ
- .txt文件改成.bat为什么没有反应
- 春运首日 广西桂林火车站向旅客“送万福”
- dicom格式怎么转换_flv怎么转换成mp4格式?三种最常用的转换方法都在这了!
- (MATLAB源代码)SVM多分类
- JSONArray.fromObject(); 引入问题
- 一些FORK函数的例子
- Java开发人员幽默外号,好听的外号绰号 好听幽默绰号大全
- Win10找不到便签怎么办 Win10找不到便签解决方法
- 第四回:产品创新性思维方法论
- 电脑桌面计算机找不到,电脑桌面没有了怎么恢复?电脑桌面没有了的恢复方法...
- Win7系统如何在线进行重装?在线一键重装Win7方法
- H3C无线控制器双链路备份配置
热门文章
- python判断是否为素数_python判断一个数是否为素数
- 围棋人机大战属于计算机在什么方面的应用,人民日报评围棋人机大战:胜出的是我们自己...
- DHTMLX Grid Crack
- bootbox.js中confirm()方法的使用
- 英文单词打字练习与学习
- 申领电子驾照提示证件照不标准
- 六款顶级Wifi无线网络搜索工具盘点
- Win11系统开启控制面板会闪退怎么解决?
- CSS之BFC(Block Formatting Context)
- nifi mysql to mysql_NiFi 实战