从Referer到XMLHttpRequest:探究Web安全中的重要知识点

目录

Referer

概念

Referrer-policy(可以一定程度上防御CSRF攻击)

同源

iframe

sandbox(沙箱):

cookie的原理:

如何设置Referrer?

盗链

盗链的工作原理

三种情况下可以引用图片:

XMLHTTPRequest

AJAX(Asynchronous JavaScript and XML)

XMLHttpRequest的实例属性

XMLHttpRequest.readyState

XMLHttpRequest.onreadystatechange

XMLHttpRequest.response

XMLHttpRequest.responeType

XMLHttpRequest.responeText

XMLHttpRequwst.responeXML

XMLHttpRequwst.responeURL

XMLHttpRequest.status

XMLHttpRequests.tatusText

XMLHttpRequest.timeout

XMLHttpRequestEventTarget.ontimeout

XMLHttpRequest.withCredentials

XMLHttpRequest.upload

XMLHttpRequest的实例方法

XMLHttpRequest.open()

XMLHttpRequest.send()

XMLHttpRequest.setRequestHeader()

XMLHttpRequest.overrideMimeType()

XMLHttpRequest.getResponeHeader()

XMLHttpRequest.getAllResponseHeader

XMLHttpRequest.abort()

XMLHttpRequest的实例事件

readyStateChange事件

load事件

erro事件

abort事件

loadend事件

timeout事件


Referer

概念

Referer是HTTP请求头信息中的一个字段,它用于表示当前请求是从哪个URL页面跳转过来的。一般情况下,浏览器会自动发送Referer字段给服务器端,服务器端可以通过该字段来进行一些操作,比如判断当前请求是否合法、实现防盗链等功能。同时,由于历史原因和安全问题,Referer也存在一些限制和漏洞,需要我们在使用时进行注意和规避。

Referrer-policy(可以一定程度上防御CSRF攻击)

Referrer-policy的作用就是为了控制请求头部中的referer的内容

包含了以下信息:

  • no-referer:整个referer首部会被移除,访问来源信息不随着请求一起发送。

  • no-referer-when-downgrade:在没有指定任何策略的情况下用户代理的默认行为。在同安全等级的情况下,发送文件的源为引用地址(HTTPS->HTTPS);在降级的情况下不会发送此首部(HTTPS->HTTP)

  • origin:在任何情况下,仅发送文件的源作为引用地址,

  • orgin-when-cross-origin:对于同源的请求,会发送完整的URL作为引用地址,但是对于非同源请求仅仅发送文件的源

  • same-orgin:对于同源的请求会发送引用地址,但是对于非的同源请求则不发送引用地址信息。

  • strict-origin:在同等安全级别的情况下,发送文件的源作为引用地址(HTPPS->HTTPS),但是在降级的情况下不会发送(HTTPS->HTTP)

  • strict-origin-cross-origin,对于同源的请求,会发送完整的URL作为引用地址;在同安全等级的情况下,发送文件的源为引用地址(HTTPS->HTTPS);在降级的情况下不会发送此首部(HTTPS->HTTP)

  • unsafe:无论是同源请求还是非同源请求,都发送完整的URL(移除参数信息后)作为引用地址。(最不安全了)

同源

那些网址符合同源的要求:协议相同、host相同、端口相同

例如:

http://www.baidu.com https://www.baidu.com-<这两个非同源(因为协议不同)

如果嵌入的网页是其他网站的网页,你不了解对方会执行什么操作,因此就存在安全风险。为了限制