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" οnerrοr="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属性:空格,单引号,双引号


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
加盐

接入层sql注入

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
判断一个页面sql注入问题:恒等的时候正常,恒不等的时候报错就是存在sql注入问题

sql注入防御

关闭错误输出
检查数据类型
对数据进行转义
使用参数化查询(彻底)
使用ORM(对象关系映射)(彻底)

nosql注入防御

检测数据类型(有效)
类型转换(有效)
写完整条件

接入层文件上传

再次访问上传的文件时,文件被当成程序解析

防御

限制上传后缀
文件类型检测
文件内容检测
程序输出(彻底)
权限控制-可写可执行互斥

其他安全问题

1.拒绝服务DOS(模拟正常用户\大量占用服务器资源\无法服务正常用户| TCP半连接\http连接\DNS)
防御:
防火墙\交换机路由器\流量清洗\高防IP
避免重逻辑业务\快速失败快速返回\防雪崩机制\有损服务(主功能正常,允许一些功能不正常)\CDN
2.重放攻击(请求被窃听或记录\再次发起相同的请求\产生意外的结果)
防御:
加密\时间戳\token(session)\noce\签名

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值