web_security(摘自不知名的人
整理文档发现的压缩包,不知道千年是从哪里得到的文档了,当时就没压缩出来,一直到现在......
XSS跨站脚本攻击初步认识
1.XSS例子
1.http://120.78.72.189:9999/from=<script>alert("hello xss")</script>
2.http://120.78.72.189:9999/from=<script src="http://xxx.com/xx.js">alert("hello xss")</script>
2.原理
将本来显示文本的html显示区域恶意修改成一段js脚本
3.XSS能做什么
1.获取页面上的数据,通过dom随便拿。
2.可以拿到Cookies,一些用户登录的信息都能拿到。
3.劫持前段的逻辑,登录按钮直接变成付款按钮了。
4.将有XSS漏洞的网站,比如搜索框有XSS漏洞的,keyword连接上一个盗取cookie脚本,别人直接点开来就能直接盗取其Cookie。
5.空间博客类发表一篇带XSS漏洞的博客,只要任何人浏览了日志,也能够直接盗取浏览者的信息,还能盗取admin后台的管理员信息。
6.还有好多...
4.XSS攻击类型
1.反射型,直接通过URL注入,像之前的搜索框注入,反射型一般需要把长网址发送给被攻击者,容易被发现,所以一般都会做一个短网址转换。
2.存储型,存储到数据库读取的时候注入,像之前的日志注入,评论注入。
5.XSS攻击注入点
1.HTML节点内容,评论注入<script>
2.HTML属性 <img src="1" onerror="alert(document.cookie)" />
3.JS代码, var data = "${data}",从后台获取数据可能会被注入
4.富文本,得保留HTML,HTML又有XSS危险
6.防御方案
1.chrome会防御,或者后台设置X-XSS-Protection,但是防御范围很有限,没啥用。
2.防御HTML节点、属性,将尖括号,引号等进行转义。
3.防御JS代码,将双引号转换成斜杠双引号,对斜杠也要进行转义。
4.防御富文本,在文章入库的时候取出dom树来校验黑白名单。(使用第三方库比较方便)
7.CSP
* Content Security Policy 内容安全策略
* 用于指定哪些内容可以执行
1.可以定义 unsafe-inline script-src,设置一些规则是否可以执行。
8.PHP中防御XSS
1.使用内置函数转义,strip_tags(),移除所有标签。htmlspecialchars(),可以保留显示标签。
2.dom解析白名单
3.用第三方库,github随手一搜就O了。
4.CSP。header("Content-Security-Policy: script-src 'self'");
CSRF跨站请求伪造初步认识
1.CSRF和XSS区别
1.XSS是本网站运行了其它网站的JS脚本
2.CSRF是其它网站的脚本对本网站产生了影响
2.例子
1.A网站具有CSRF漏洞,当一个用户登录到A网站,并且生成了用户的COOKIES;2.B网站可以获取到A网站的各种请求地址,比如说发文章,发评论,打钱之类,然后将地址伪装在B网站或其他网站的评论区文章区等等;3.当登录了A网站的用户到了B网站或者C,D,E,F网站看到了A网站的请求地址,点击了那个"点击送钱"的伪装地址之后,就会直接通过这个用户的COOKIES请求A网站;4.至此CSRF攻击就完成了,就是用户不知情的情况下点击了伪装的A网站地址做出了自己攻击自己的操作;
3.危害
1.利用用户的登录状态2.用户不知情3.完成发表文章,盗取资金等操作
4.防御
1.禁止第三方网站使用当前的Cookies,使用same-site属性设置strict,设置同一网站才能带Cookies2.CSRF攻击不会访问A网站前端,在前端可以加入验证码或者TOKEN,像Laravel中可以直接加{{csrf_field()}}3.使用token,form提交直接加载input hidden字段里面,ajax提交存在meta标签里面,再用js获取到token值再发送4.验证referer,判断请求的地址URL是否是本站
5.PHP防御CSRF
1. header('Set-Cookie: name=456;SameSite=Lax');2. 使用referer,获取$_SERVER['HTTP_REFERER'];3. 用token,随机生成token串传递到页面一个,传递到cookies,提交表单时候校验是否相等;
Cookies安全
1.Cookies特点
1.数据存储在前端2.后端通过HTTP头设置3.请求时候通过HTTP头传给后端4.前端可以用JS进行读写5.遵守同源策略,协议域名端口一致的时候
2.Cookies属性
1.域名2.有效期3.路径4.http-only(只能被http协议使用)5.secure
3.Cookies应用
1.设置一些个性化设置,菜单打开关闭,皮肤设置,未登录时候的购物车等等;2.未登录时候用户的唯一标识;3.存储已登录用户的凭证;4.存储其它业务数据;
4.Cookies和XSS的关系
1.XSS可以偷取到Cookies2.http-only的Cookies不会被偷
5.Cookies和CSRF的关系
1.CSRF是利用用户的Cookies,让用户通过自己的cookies去操作2.攻击的站点无法读取cookies,只能控制用户的操作
点击劫持
1.特点
1.用户亲手操作2.用户不知道的情况下
2.例子
在一个透明的iframe上面覆盖一层页面,比如说点击按钮看美女刺激视频,然后用户点击一下,用户的钱啊邮件啊账号啊隐私啥的就没了。
3.防御
* JavaScript禁止内嵌* 设置X-Frame-Options为Deny
数据传输安全
1.HTTP传输窃听
浏览器-->代理服务器-->链路-->服务器 (在代理和链路发生篡改)
2.可以做什么
1.可以窃听用户关于上网需要的一切隐私信息,比如说你使用了第三方提供的VPN代理,第三方的VPN代码可以获取到你所传输的大部分数据,如浏览地址,发送的参数。2.可以被插入广告,比如说运营商提示你要不要升级宽带啥的。3.傻逼红包广告4.局域网可以拦截到用户上网,可以将一些经过篡改的网站显示在用户前5.公共WiFi很危险
3.解决方法
1.使用HTTPS加密,其中需要一个CA证书机制。
密码安全
1.密码的泄露渠道
* 数据库被盗* 服务器被入侵* http通信过程被窃听* 内部人员泄露* 撞库(多个网站设置的密码是一致的,通过破解的一套密码获取到其它网站的登录)
2.密码存储
* 严禁明文存储* 单向加密* 变化复杂度要求* 密码本身的复杂度* 加盐
3.防御
* 用HTTPS防止传输过程被窃听* 设置登录频率防止暴力猜解* 前端加密
数据库接入层安全
1.SQL注入
1.select * from table where id = ${id};
注入 1 or 1 = 1
就直接把所有的数据全部获取到了
2.用一些函数mid等可以获取版本,破解密码,删库删表,拖库等
3.防御:a.关闭错误输出,b.检查数据类型,c.对数据进行转义,d.使用参数化查询,e.使用ORM
2.文件上传
1.预防上传的文件被当成程序解析
上传问题防御
1.限制文件后缀2.文件类型检查3.文件内容检查4.程序输出5.权限控制,可写可执行互斥

浙公网安备 33010602011771号