前端安全之常见漏洞及防御
随着项目复杂度的提升以及用户体量的增大,前端安全变得越来越重要。平时系统运行正常,一旦出现安全问题,轻者部门扣分,严重的可能对公司造成严重损失。了解一些常见漏洞,平时开发时注意,防患于未然。
一. 漏洞分类
分类 | 特点 |
---|---|
跨站脚本攻击 | 任意内容在展示到页面之前,对内容中的特殊字符进行转义,避免产生XSS跨站脚本攻击等前端漏洞。 |
跨站请求伪造 | 网站必须部署防御 CSRF 攻击的解决方案,每个接口都需要校验 Referer 和 csrf_token。重要接口需要对重放攻击进行防御 |
服务端请求伪造 | 程序中如有对外发送请求的功能,必须严格限制发送的目标和内容的类型;对于只需要请求公网的功能点,必须限制其向内网发送请求。 |
任意文件读取 | 程序在读取本地文件时,需要对读取的目录范围和文件名称禁止限制,避免跨目录读取敏感文件; |
任意文件上传 | 若程序带有文件上传功能,必须在服务端代码中严格限制允许上传的文件类型;存放文件的目录需要与程序代码隔离 |
SQL注入 | 程序中应具有抵御SQL注入漏洞的能力。需采用预编译等方式执行数据库操作,禁止把传入参数直接拼接在SQL语句中。 |
命令注入 | 避免程序直接调用操作系统命令,在执行前必须检查命令中的是否有非法的特殊字符。 |
跳转漏洞 | 进行url跳转时,禁止跳转到其他非相关域名,含非公司域名及公司其他非相关业务域名 |
越权漏洞 | 在执行用户提交的操作前,必须校验提交者与操作目标的关系,禁止未经授权操作其它用户的数据,同时也需要避免普通用户执行管理员层级的操作,避免产生权限绕过、水平越权和垂直越权漏洞。 |
二. 常见漏洞
XSS漏洞
通过将恶意得Script代码注入到Web页面中,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
场景
盗取账户,网站挂马,植入广告或垃圾信息,篡改页面等。
Xss分类
反射型xss
原理:发出请求时,XSS代码出现在url中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,所以叫反射型XSS,可能引导用户点击链接盗取用户信息
存储型xss
又叫持久型,它是三种xss里危害最大的一种。是由于恶意攻击代码被持久化保存到服务器上,然后被显示到HTML页面之中。这类漏洞经常出现在用户评论的页面,攻击者精心构造XSS代码,保存到数据库中,当其他用户再次访问这个页面时,就会触发并执行恶意的XSS代码,从而窃取用户的敏感信息
DOM型xss
基于dom的漏洞,它的攻击代码并不需要服务器解析响应,触发XSS靠的是浏览器端的DOM解析。客户端上的JavaScript脚本可以访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数据并执行。比如读取url或外部输入插入到网页中,如果没有xss过滤转义,极易触发DOM型XSS漏洞。
防御
- Url、表单输入过滤。将用户输入的内容进行过滤。对所有用户提交内容进行可靠的输入验证,包括对 URL、查询关键字、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。(客户端和服务器都要)
- 输入转义。往html中插入数据、把字符串转成html时,对数据进行字符实体编码
function htmlEncodeByRegExp (str){ var s = "";if(str.length == 0) return "";s = str.replace(/&/g,"&");s = s.replace(/</g,"<");s = s.replace(/>/g,">");s = s.replace(/ /g," ");s = s.replace(/\'/g,"'");s = s.replace(/\"/g,""");return s; }
- cookie设置为httponly。浏览器端不能访问cookie
CSRF漏洞(Cross Site Request Forgery,跨站请求伪造)
跨站点请求伪造漏洞:用户以当前身份浏览到flash或者第三方网站时,JS/flash可以迫使用户浏览器向任意CGI发起请求,此请求包含用户身份标识,CGI如无限制则会以用户身份进行操作。
场景
登录受信任网站A,并在本地生成Cookie。(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录)
在不登出A的情况下,访问危险网站B,网站B请求网站A的接口(其实是利用了网站A的漏洞)
防御
- 设置referer白名单,验证 HTTP Referer 字段。如果是以自身安全网站开头的域名,则说明该请求是是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。
- 在请求地址中添加token并验证。重要信息不通过cookie,在请求中以参数形式加入一个随机产生的token,并在服务器验证该token,不正确则拒绝该请。
- 在http头中添加自定义属性并验证。和token类似,只是把token放在自定义头信息中.
- 重要操作添加验证码。
SSRF漏洞 (Server-Side Request Forgery,服务器端请求伪造)
危害为服务器代替攻击者发送一个外界不可达的请求(服务器本机或所处内网),导致安全边界内资产遭受攻击或者信息被暴露的漏洞,在庞大的内网环境下,ssrf被评为高危漏洞。
场景:访问node提供的服务,下载其他存储桶的cos文件,由于没有校验域名,导致cos回源暴露内网信息,该漏洞被内网安全扫描检测到。
防御
- 校验外部传入的域名是否在白名单。设置一个域名白名单,判断域名合法性。适用场景:拉取文件或接口资源时没有对导致进行判断导致请求外部传入的恶意地址
- 校验外部传入的域名是否恶意。判断ip是否指向内网。
- 物理隔离下载代理。可对发送请求的机器使用iptables进行物理隔离;也可配置专用下载proxy,对代理机器进行物理隔离。ssrf的根本在与发送内网和本地资源的攻击请求,因此适用云服务器和物理隔离服务器。
敏感文件泄露漏洞
常见的.DS_Store文件(mac上生成的),在生成的dist目录中有可能存在,存在文件信息泄露风险。
文件 | 危害 | 防御 |
---|---|---|
.DS_Store | 泄露目录结构 | 删除 |
.bashrc | 泄露.bashrc文件 | 删除 |
.kshrc | 泄露.ksrc文件 | 删除 |
.zshrc | 泄露.zsrc文件 | 删除 |
.bash_history | 泄露命令执行记录 | 删除 |
.bash_profile | 泄露.bash_profile | 删除 |
.bash_logout | 泄露.bash_logout | 删除 |
known_hosts | 泄露known_hosts | 删除 |
.mysql_history | 泄露mysql操作记录 | 删除 |
authorized_keys | 泄露授权公钥 | 删除 |
.svn/entries | 泄露svn信息 | 删除 |
.svn/format | 泄露svn信息 | 删除 |
.git/config | 泄露git信息 | 删除 |
.git/logs/HEAD | 泄露git信息 | 删除 |
error.log | 泄露web容器错误日志 | 删除 |
access.log | 泄露web容器访问日志 | 删除 |
a.out | 泄露编译输出 | 删除 |
user.cfg | 泄露内网ip | 删除 |
global.cfg | 泄露内网ip | 删除 |
config.ini | 泄露物理路径 | 删除 |
/debug/pprof/ | golang debug | 关闭 |
.htaccess | 分布式配置文件 | 禁止访问 |
README.md | README文件 | 删除 |
private.key | 密钥文件 | 删除 |
.idea/workspace.xml | 删除 | |
web.config | 禁止访问 | |
.env | 删除 | |
flags | poppy框架flags信息泄露 | 禁止访问 |
/health | spring actuator未授权访问 | 禁止访问 |
metrics | https://prometheus.io/docs/guides/go-application/ go服务使用了它 | 禁止访问 |
index.php?s=index/woshiyizhixiaomaolvconglaimeirenqi | thinkphp 报错泄露数据库密码等信息 | 关闭错误显示 |
graphql?query={__schema{types{name,fields{name}}}} | graphql内省系统对外开放 | 配置graphiql: false关闭graphql内省系统 |
package.json | nodejs项目依赖文件 | 禁止访问 |
haproxy?stats | haproxy统计页面 | 禁止访问 |
_ignition/share-report | 报错页面 | 修复报错 |
swagger/index.html | Swagger UI对外开放 | 禁止访问 |
/nacos/v1/auth/users/?pageNo=1&pageSize=9 | nacos密码泄露 | 升级到最新版 |
三. 系统防护或检测
- 在开发流程,接入验证码限频页面,访问频率超限时,重定向到该页面
- 在cicd流程,接入蓝盾,配置安全检测插件,针对依赖、代码等进行漏洞检测。
- 针对域名,接入防火墙应用,防范多类安全漏洞:例如腾讯门神,可检测并拦截各类漏洞攻击,也可自定义安全策略,限制ip访问等。
更多漏洞及防护,关注后续更新
也欢迎加入微信群交流学习,点击加入
前端安全之常见漏洞及防御相关推荐
- 常见漏洞的防御措施整理
文章目录 0x01 注入攻击 风险说明 预防措施 0x02 文件上传漏洞 系统运行时的防御 系统开发阶段的防御 系统维护阶段 0x03 认证会话管理 0x04 访问控制 风险说明 防御措施 0x05 ...
- 渗透测试常见漏洞描述及修复建议
弱口令 漏洞描述 由于系统中存在有弱口令,导致攻击者通过弱口令可轻松登录系统中,从而进行下一步的攻击,如上传webshell,获取敏感数据! 另外攻击者利用弱口令登录网站管理后台,可任意增删改等操作, ...
- [总结]常见漏洞的总结
这里对Web安全中常见的漏洞及安全问题做一个总结 看情况包含常见漏洞原理.危害.预防.(后面可以增加靶场实操) 注入漏洞 XSS(跨站脚本攻击) 跨站请求伪造(CSRF) XML外部实体(XXE) 文 ...
- 前端 web端常见的攻击有那几种类型 网站瘫痪 崩溃的原因
前端 web端常见的攻击有那几种类型 文章目录 前端 web端常见的攻击有那几种类型 dos攻击和ddos攻击 dos攻击的原理 ddos攻击 dos攻击的类型 CSRF攻击 CSRF防御 XXS攻击 ...
- 常见漏洞原理及修复方式
漏洞原理及防护 Burte Force(暴力破解) 在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取. 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果. 为了提高 ...
- BurpSuite实战教程01-web渗透安全测试(靶场搭建及常见漏洞攻防)
渗透测试 渗透测试(Penetration test)即安全工程师模拟黑客,在合法授权范围内,通过信息搜集.漏洞挖掘.权限提升等行为,对目标对象进行安全测试(或攻击),最终找出安全风险并输出测试报告. ...
- 【Web安全笔记】之【4.0 常见漏洞攻防】
文章目录 4.0 常见漏洞攻防 4.1 SQL注入 4.1.1 注入分类 1. 简介 2. 按技巧分类 1). 盲注 2). 报错注入 3). 堆叠注入 3. 按获取数据的方式分类 1). inban ...
- android WebView详解,常见漏洞详解和安全源码(下)
上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http ...
- android WebView详解,常见漏洞详解和安全源码(上)
这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView ...
- 网站渗透测试之常见漏洞排行
我们SINE安全在进行Web渗透测试中网站漏洞利用率最高的前五个漏洞.常见漏洞包括注入漏洞.文件上传漏洞.文件包含漏洞.命令执行漏洞.代码执行漏洞.跨站点脚本(XSS)漏洞.SSRF漏洞.XML外部实 ...
最新文章
- Hibernate 关联映射 之 多对多 关联(一)
- 惠普微型计算机怎么样,垃圾佬的养成①日记之惠普HP 400G3 DM迷你小主机入手日记...
- zookeeper集群自动启动-关闭-查询的shell脚本
- busybox的编译和使用
- 跟着偶像学大数据——开端篇
- 【转】Elasticsearch+Django搜索引擎(一)
- 今天终于找到了一款windows下的Zcash钱包(ZEC钱包),推荐给大家
- 转速双闭环matlab仿真,电流转速双闭环直流调速系统matlab仿真 实验.doc
- vue 函数(二):callback回调函数
- DMG计算机,dmg文件怎么打开?dmg是什么意思?
- 计算机硕士工资一览表 08年各大IT公司薪水行
- 软件加入使用时间_Adobe CC 2020 系列软件更新(Adobe Zii 2020 5.2.1)| Mac软件天堂
- SpringBoot发送QQ邮件图片显示不出来
- 项目总结3 类似网易云音乐导航栏指示器(个性推荐、歌单等)的简单实现(一)
- 大三菜鸡Java面试凉经
- ROS--rospy
- MATLAB 基础知识 数据类型 表 添加、删除和重新排列表变量
- postfix mysql 虚拟用户_postfix+extmail+mysql虚拟用户邮件体系的搭建
- 在 VS Code 中使用 Git
- k8s搭建监控:安装metrics server和dashboard
热门文章
- 通达信 移动平均算法_中山证券通达信下载-中山证券通达信软件 v1.06 官方版
- 方正真GBK(字体名称中有GBK且字数达到21003)字体列表
- 字体出现闪烁效果html,CSS3实现文字闪烁效果的多种形式代码
- kb931125—rootsupd_kb931125-rootsupd补丁下载
- 8.0版本jdbc驱动连接数据库
- java后台实现弹窗提示_java后台代码弹窗
- 《上古卷轴5重制版》支线任务
- 傅里叶热传导定律【Fourier's Law of Heat Conduction】
- Python的下载安装图文教程(超详细!!!)
- 16qam matlab 误码率,16QAM理论误码率与实际误码率MATLAB仿真程序