web前后端漏洞分析与防御
环境准备
node.js npm
npm config set registry https://registry.npm.taobao.org
npm i -g jspm
jspm i
数据库数据导入:C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>mysql -hlocalhost -uroot -pwsc
-Dtest<E:\t1eexx\safety.sql
所谓的安全
私密性:不被非法获取和利用:代码层面,架构层面,运维层面
可靠性:不丢失不损坏不被篡改
安全问题
网站数据库泄露
用户资料被盗取
用户密码泄露
用户身份被盗用
前端XSS
跨站脚本攻击XSS(Cross Site Scripting)恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的
npm start
https://www.baidu.com/?from=<script >alert(1) </script>ggg
http://localhost/?from=<script src='https://code.jquery.com/jquery-3.2.1.js'> </script>ggg
检测网站xss漏洞:添加alert(1)
xss攻击类型:url参数直接注入(转换为短网址) 存储到db后读取时注入
XSS注入点
1.HTML节点内容()
<div>#{content}</div>
<div><script>alert(1)</script></div>
2.HTML属性(提前终止属性)
<img src="#{image}" />
<img src="1" onerror="alert(1)"/>
3.Javascript代码(字符串提前关闭)
<script type="text/javascript">
var data = "#{data}";
var data = "hello";alert(1);"";
</script>
4.富文本
浏览器自带防御,反射性XSS(HTML内容和属性)上面的参数出现在HTML内容或属性两种攻击 ctx.set('X-XSS-Protection',1);
防御
HTML内容: 转义< < > >
HTML属性:空格,单引号,双引号
Javascript代码
富文本:a.黑名单
去掉<script/>….
b.白名单
只允许保留部分标签和属性 (CSP)
跨站请求伪造攻击CSRF(Cross Site Request Forgy)
在其他网站进行了对本网站的操作 (可造成网络网络蠕虫)
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>csrf demo</title>
</head>
<body>
hello,这里什么也没有。
<script>
document.write(`
<form name="commentForm" target="csrf" method="post" action="http://localhost:1521/post/addComment">
<input name="postId" type="hidden" value="1">
<textarea name="content">来自CSRF!</textarea>
</form>`
);
var iframe = document.createElement('iframe');
iframe.name = 'csrf';
iframe.style.display = 'none';
document.body.appendChild(iframe);
setTimeout(function(){
document.querySelector('[name=commentForm]').submit();
},1000);
</script>
</body>
</html>
csrf防御
1.禁止第三方网站带Cookies (设置 same-site目前就谷歌浏览器支持)
2.网站提交时验证码
3.网站加token(<meta name="csrf-token" content="{{ csrf_token() }}">) ps:需要注意多Token覆盖的问题
3.验证referer(禁止第三方网站的请求)
点击劫持,clickjacking,也被称为UI-覆盖攻击
是一种视觉上的欺骗手段。大概有两种方式,一是攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,此时用户将在不知情的情况下点击透明的iframe页面;二是攻击者使用一张图片覆盖在网页,遮挡网页原有位置的含义.
防御
1.JavaScript禁止内嵌
2.X-FRAME-OPTIONS禁止内嵌
传输安全
传输安全问题(HTTP传输明文可造成窃听)
Tracert 命令(win)
一个探测路由的程序,可以让我们看见IP数据报到达目的地经过的路由
anyproxy 代理\ssl\https部署\证书的申请与 (还得多去了解)
密码安全
哈希算法
明文 -> 密文
雪崩效应(密码混乱)
不可逆性
密文固定长度
md5 sha1 sha256
加盐