学习的一些笔记。
通过js向网页发送请求获取内容
//javascrip实现
var xml = new XMLHttpRequest();
xml.open('GET', "网址");
//xml.setRequestHeader("自定义报文头");
xml.send('sss');
//利用回调函数获取返回页面的值。
xml.onreadystatechange = function() {
//判断是否获取成功。成功则弹出值。
if (this.status == 200) {
alert(this.responseText);
}
}
//jquery实现
$.ajax({
method:"GET",
url:"网址",
success:function(data){
alert(data);
}
})
域的划分
只有协议、域名、端口都一致的才算是同源。
//http://a.com:10086/ajax.php
//http:// 协议
//a.com 域名
//10086 端口
//ajax.php 路径
csrf漏洞
用户事先登录成功A网站,并且没有退出A网站。此时通过B网页访问A网页时,会自动带上A网站的cookie,A网站如果没有相关拦截措施,会直接解析cookie,识别身份,对对应账户执行对应操作,之后返回数据。如果有access-的设置,虽然浏览器接收到返回数据后,判断不同源,会直接拦截信息,B无法接受返回信息。但是在此过程中有关操作已经成功执行。
防护手段
-
第一种(二次发送)
强制相关操作必须执行两次,第一次请求获得一个随机的token值,随后A网站返回一个token值。第二次发送操作请求时带上获得token值,执行成功返回带token的信息。如果是用B网站去发送请求,由于第一次返回带token值时,不同源,浏览器会拦截,无法得到返回token值,操作无法执行。但是要发送两次,造成较大的 -
第二种(B站)
cookie中含有一个csrf-token值,对A网站进行操作时,强制要求发送请求的发送值中带上csrf-token,不能仅仅只是再cookie中。由于无法得到cookie值,能有效防护。 -
第三种(喜马拉雅)
不使用cookie,自制一个令牌头。
javascrip类
function A(){
this.text="hello,world";
}
//为类添加属性
A.prototype.add=function(a,b){
return a+b;
}
//实例化类
var a=new A();