web常见六⼤安全问题
常见安全问题
1. xss
2. csrf
3. 点击劫持
4. URL跳转漏洞
5. SQL注⼊
6. OS命令注⼊攻击
⼀、xss 跨站脚本攻击
原理:往web页⾯插⼊可执⾏的⽹页脚本代码
防御⽅式:
1、设置⽩名单csp
⽅式⼀:设置HTTP Header中的Content-Security-Policy
⽅式⼆:设置meta标签
<meta http-equiv ="Content-Security-Policy" content="script-src 'self'; object-src 'none'; ; child-src https:"/> 2、⽤户输⼊值限制
将输⼊输出的内容进⾏转义,对引号、尖括号、斜杠进⾏转义
转义⽅法encode()⽅法
3、HttpOnly cookie
设置cookie时,将其属性设为HttpOnly,可避免该⽹页cookie被恶意窃取,保护⽤户cookie信息
⼆、CSRF 跨站请求伪造
原理:利⽤⽤户已登录的⾝份,在⽤户毫不知情的情况下,以⽤户名义完成⾮法操作
防御⽅式
1、可以对cookie设置,sameSite属性,表⽰cookie不随跨域请求发送(兼容性不好)
2、通过Referer限制Referer信息,告诉服务器是从哪个页⾯链接过来的
3、加⼀个token值⽤于验证,发请求时在http中加⼀个随机token
4、验证码操作(体验不好)
三、点击劫持
原理:通过iframe透明化,漏出⼀个按钮诱惑⽤户点击
防御:
1、设置http响应头 X-FRAME-OPTIONS 防御iframe点击劫持
参数:
DENY,表⽰页⾯不允许通过iframe的⽅式展⽰
SAMEORIGIN,表⽰页⾯可以在相同域名下通过iframe展⽰
ALLOW-FROM,表⽰页⾯可以在指定来源的iframe中展⽰
2、通过js⽅法来判断,来隐藏iframe显⽰的页⾯
<script>
if(self == top){
var style = ElementById('click-jack')
ve(style)
}else{
top.location = self.location
}
</script>
四、url跳转漏洞
借助未验证的URL跳转,将应⽤程序引导到不安全的第三⽅区域,从⽽导致的安全问题
防御⽅式
1、referer的限制
如果确定传递URL参数进⼊的来源,我们可以通过该⽅式实现安全限制,保证url的有效性,避免恶意⽤户⾃⼰⽣成跳转链接
2、加⼊有效性验证token
五、SQL注⼊
本质:数据和代码为未分离,即数据当做了代码来执⾏
影响:获取数据库信息,管理员后台⽤户名和密码,读取服务器敏感⽂件等,甚⾄修改数据库内容
防御:
1、严格限制web应⽤的数据库操作权限,给此⽤户提供仅仅能够满⾜其⼯作的最低权限,从⽽最⼤限度减少注⼊攻击对数据库的危害
2、后端代码检查输⼊的数据是否符合预期,严格限制变量类型,可以使⽤正则表达式进⾏⼀些匹配处理
3、对进⼊数据库的特殊字符(’, ",空格, <, >, &, ;等)做转义处理或者编码转换,⽐如 库
4、查询语句建议使⽤数据库提供的参数化查询接⼝,参数化的语句使⽤参数,⽽不是将⽤户输⼊变量嵌⼊到SQL语句中,即不要直接
拼接SQL语句
例:nodejs中的mysqljs库的query⽅法中?占位参数
六、OS命令注⼊攻击meta大裁员
OS命令注⼊攻击指通过web应⽤,执⾏⾮法的操作系统命令达到攻击⽬的
防御
1、后端对前端提交内容进⾏规则限制,⽐如正则表达式
2、在调⽤系统命令前,对所有传⼊参数进⾏命令⾏参数转义过滤
3、不要直接拼接命令,借助⼯具拼接、转义预处理
例:nodejs的 npm 包

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。