1.cookic和session
你第一次注册网站时,网站会将你的用户名、加密后的密码、其他的个人资料以及你的权限全部放到网站数据库的user表中,
同时服务端通过session技术将你的个人资料以及你的权限保存到一个文件中,然后将文件发送给客户端,客户端会将文件中的信息保存到cookic中(一般存储在浏览器中)。
当你下次再登陆时网站服务端会将其保存的sesson文件及你cookic中的sessonID进行对照直接就可以登陆无需账号密码。
session存储在服务端,cookic存储在客户端。
上图为cookic保存的文件格式:sess+sessionID
sessionID:即将用户个人资料以及用户的权限编码后生成的随机字符。
当你下次再登陆时网站服务端会将其保存的sesson文件及你cookic中的sessonID进行对照直接就可以登陆无需密码。
1.1使用XSS攻击获取cookic的目的
获取到对方的后台地址
实现免账号密码登录
遇到问题:
问题1:能否做到解密管理员密码
问题2:能找到后台地址且能做到密码解密的情况下需要考虑是否会被白名单限制
问题3:注意cookic有失效时间
2什么是同源
同源:协议相同,host相同,端口相同
点提:url包含(协议,host,端口)
例:
1.http和https非同源 原因:协议不同
2 http://test.baidu.com和http://www.baidu.com非同源 原因:host不同
3. http://www.baidu.com:80和http://www.baidu.com:8080非同源 原因:端口不同
3.盗链与防盗链
盗链:
盗链是指在自己的页面上展示一些并不在自己服务器上的一些内容, 获取别人的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。一般被盗链的都是(图片、 可执行文件、 音视频文件、压缩文件等资源。)通过盗链的手段可以减轻自己服务器的负担。
理解:为直接使用网上资源链接
防盗链:
通过Referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以追踪到显示它的网页地址 一旦检测到来源不是本站,即进行阻止或者返回指定的页面
理解:即网站会分辨referer的网址与host的网址是否同源,若不为同源则进行盗链阻止。
例:
注: Referer请求头可能会暴露用户的浏览历史、涉及到用户的隐私问题
Referrer-policy
作用:为了防御请求头中的referer内容,可以在一定程度上防御csrf攻击。
原理:当受到csrf攻击时referer中为攻击者的服务器IP,host中为你登陆的网站的IP,二者不同时Referrer-policy会禁止传输
csrf攻击:客户端请求伪造
绕过图片防盗链:
绕过防法
本网站。
授权的网址。
无referer信息的情况。(服务器认为是从浏览器直接访问的图片URL,所以这种情况下能正常访问)
第三种情况是最常使用的方法
绕过方法:
1)https协议降级
strict-origin-when-cross-origin: 对于同源的请求,会发送完整的URL作为引用地址;在同等安全级别的情况下,发送文件的源作为引用地址(HTTPS->HTTPS);在降级的情况下不发送此首部 (HTTPS->HTTP)。
理解:在此值的影响下,文件源网站若https协议降级为http协议,请求盗链时不会再发送referer字段内容
利用https网站盗链http资源网站,refer不会发送
降级操作可能会被浏览器禁用
1.1生成自签名证书利用openssl生成自签名证书(具体操作)
Blog/HTTP相关/Demos/referer/demo03 at main · zxl925768661/Blog · GitHub
实现https降级
问题:降级操作可能会被浏览器禁用
2)头部设置no-referrer字段
操作:
直接在网页头部加字段<meta name="referrer" content="no-referrer" />
例:
结果:信息中无referer
3)在img标签中添加referrerpolicy="no-referrer"属性
结果:
代码结果: