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>gggweb前后端漏洞分析与防御

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内容: 转义< &lt; > &gt;
HTML属性:空格,单引号,双引号

web前后端漏洞分析与防御
Javascript代码

web前后端漏洞分析与防御
富文本:a.黑名单
去掉<script/>….
b.白名单
只允许保留部分标签和属性 (CSP)

跨站请求伪造攻击CSRF(Cross Site Request Forgy)

在其他网站进行了对本网站的操作 (可造成网络网络蠕虫)

web前后端漏洞分析与防御

<!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禁止内嵌

web前后端漏洞分析与防御

传输安全

传输安全问题(HTTP传输明文可造成窃听)

Tracert 命令(win)
一个探测路由的程序,可以让我们看见IP数据报到达目的地经过的路由
anyproxy  代理\ssl\https部署\证书的申请与 (还得多去了解)

密码安全

哈希算法
明文 -> 密文
雪崩效应(密码混乱)
不可逆性
密文固定长度
md5 sha1 sha256
加盐

web前后端漏洞分析与防御