常见Web安全漏洞及防范
分享三种常见的安全漏洞
输入输出验证不充分
SQL注入
定义
SQL注入是SQL语句插入到传入参数的攻击,之后再将这些参数传递给SQL服务器加以解析并执行。
成因
代码中有拼接的SQL或HQL语句
危害
- 拖库:导致数据丢失、数据窃取、数据破坏或拒绝服务
- 提权:完全接管操作系统
防范
思路:预处理和参数化查询
- 预处理和参数化查询PreparedStatement
使用相关的框架如Struts、Hibernate、Ibatis等
- 执行严格的输入验证
使用正规表达式,严格检查输入的类型、长度和内容
跨站脚本攻击(XSS)
定义
跨站脚本攻击(XSS)通常是指攻击者利用网站程序对传入参数值过滤不足,输入可以显示在页面上对其他用户造成影响的HTML、JS恶意代码。
成因
- 传入值验证不严格、用户能够控制传入值
- 未经处理直接输出到客户端网页中
危害
劫持用户会话、插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器等。
防范
思路:数据在输出时转义编码处理
- 输出编码(输出至客户端前进行编码)
输入验证或过滤(客户端及服务器端双向验证)
- 严格输入验证:对用户输入的数据类型、大小、范围的验证,可避免输入危害的字符和冗余数据
- 黑名单过滤
恶意文件上传
定义
恶意文件上传是指攻击者通过修改上传功能程序的参数内容,从而达到上传恶意文件的目的
成因
未对上传文件类型和格式做合法性校验,导致攻击者可以上传WebShell恶意文件(.asp,.war,.php,.jsp等)
危害
可以获取Web服务器的控制权
防范
思路:上传文件进行白名单过滤(只允许需要的)
- 文件类型、大小检查
- 下载时直接文件名引用
上传的文件以二进制形式下载,不提供直接访问
- 上传目录禁止执行及独立保存位置
指定上传文件目录(此路径应该在Web服务器限制为只读,禁止执行),文件存储到独立的文件服务器或数据库中。
- 随机改写文件名和文件路径,使不可猜测
逻辑设计缺陷
业务逻辑漏洞
定义
业务逻辑漏洞是由于业务逻辑设计或流程设计不完整、不合理导致的业务相关的缺陷。
成因
业务逻辑漏洞是由于业务逻辑设计或流程设计不完整、不合理,客户端可以控制输入数据和流程、检查点
危害
- 信息泄露、越权访问、账号窃取等
- 一般是全局问题,可能比常规的安全漏洞更加严重
实例
- 资源耗尽
短信、邮件等如果没有限制发送次数就会产生拒绝服务攻击
- 注册送优惠券
手机用户注册可送优惠券,未限制每个手机次数
- 任意重置密码
密码找回的凭证太弱,如只需填入一个四位或者六位的纯数字就可以重置密码,导致可以暴力破解;
用户找回密码的邮箱或者手机号码被修改
- 绕过验证码
12306输入完验证码提交订单时必须要等待4.8秒,可绕过验证码
- 任意邮箱绑定
任意邮箱绑定账号(结合CSRF),验证码链接直接登陆。
防范
思路:业务流程需要有必要的控制参数,同时避免控制参数被绕过。
- 防止绕过流程节点和检查参考(如token等)
- 不需要用户操作或访问的数据避免发送到客户端(如验证码发送给客户端)
- 验证所有输入(数字的边界、正负值等)
- 防范资源消耗攻击(如短信等)、拒绝服务攻击(大规模数据查询,如搜索通配符)等
失效的身份认证
定义
身份认证功能存在设计缺陷或功能薄弱,这就导致攻击者绕过认证,窃取密码、密钥、会话令牌或利用实施漏洞冒充其他用户身份
成因
身份认证方式薄弱,如弱密码、无验证码等
逻辑设计缺陷导致可以重置任意用户密码
危害
绕过认证或窃取用户账户,特权账户会造成更大的破坏
防范
身份认证时第一道安全防线,身份认证需要防暴力破解、弱口令攻击。密码策略和验证码时互联网系统认证标配。
- 密码策略
一般系统:8字符以上,且进行弱密码检查,并禁止包含用户名
重要系统:使用多种验证方式(如动态密码、短信等)
- 首次登陆修改初始密码:首次登陆强制修改默认初始密码
- 防密码暴力破解或猜解(或撞库):使用验证码登陆(如三次密码或账号尝试错误后出现)
- 密码重置:验证旧密码或手机验证码
- 邮箱/手机绑定:绑定操作需要用户确认(需要手工输入验证码)
越权操作
定义
越权操作指对系统进行超越自己权限的操作;
横向越权:非法获取同类用户权限
纵向越权:非法获取管理员或特权用户权限
成因
缺乏对用户权限的判断,及隐藏URL失效
危害
越权可造成非授权用户对所有数据、功能进行操作
防范
思路:用户全部请求进行权限检查
- 验证每次请求(URL、数据资源)的用户权限
- 参数随机化(避免可预测)
- 管理后台加强认证和访问控制(如IP地址限制)
环境漏洞
)]
第三方代码或组件
在使用第三方产品前,需要进行安全评估和版本筛选,从可信的网站(如官网下载),删除不必要的功能,并及时跟踪安全补丁。
API接口安全
接口安全认证
应对接口访问进行认证(服务器端分配API KEY),如使用Token/openid防范非法访问;IP白名单限制。
接口数据有效性检查
应对接口数据有效性进行检查,防范重放攻击和代码注入攻击。
接口数据加密传输
应使用数据加密、数字签名等方式保证数据保密性和完整性
接口访问权限及记录
应对接口的访问权限、访问频次进行控制,并记录接口访问的日志。
安全开发原则
永不信任用户输入
- 对用户输入的有效性检查
- 前端+后端双向验证
- 避免执行用户输入数据
最小攻击页面
- 最小权限
- 功能最小化(只实现需要功能)
- 输出最小化
纵深防御
- Web应用安全
- 操作安全
- 中间件安全
- 数据库安全
- 网络安全
- 客户端、移动APP安全
转载于:https://juejin.im/post/5d0c9211f265da1b8466ed64
常见Web安全漏洞及防范相关推荐
- 常见Web安全漏洞深入解析
常见Web安全漏洞深入解析 1.XSS跨站脚本攻击 2.SQL注入攻击 3.OS命令注入攻击 4.HTTP首部注入攻击 5.邮件首部注入攻击 6.目录遍历攻击 7.远程文件包含漏洞 1.XSS跨站脚本 ...
- 美国主机常见的安全漏洞与防范方法详解
在今天的数字时代,保护计算机系统和数据安全至关重要.不幸的是,网络安全问题在过去几年中已经成为全球性的问题.攻击者利用各种漏洞和技巧来入侵系统,以窃取敏感信息.加密数据或者破坏系统.在本文中,我们将探 ...
- 常见Web安全漏洞类型
阅读文本大概需要3分钟. 为了对Web安全有个整体的认识,整理一下常见的Web安全漏洞类型,主要参考于OWASP组织历年来所研究发布的项目文档. 01:注入漏洞 1)SQL注入(SQL Injecti ...
- 常见web安全漏洞介绍
引言 介绍常见web漏洞,参考OWASP top10漏洞,pikachu靶场 1.弱口令漏洞 1.1 原理介绍 只要口令能被猜测到或者出现在弱口令字典中,都算做弱口令. 1.2漏洞识别 如果是web登 ...
- 常见web安全漏洞及修复建议
文章目录 常见WEB漏洞 高危漏洞 SQL Injection(SQL注入攻击) 漏洞描述 修复建议 Cross-site scripting(跨站脚本攻击,简称XSS) 漏洞描述 修复建议 Brok ...
- web 安全漏洞及防范
一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带的 ...
- 常见web安全漏洞修复方案(全面)
第一章 SQL注入漏洞 第一节 漏洞介绍 概述:SQL注入攻击包括通过输入数据从客户端插入或"注入"SQL查询到应用程序.一个成功的SQL注入攻击可以从 数据库中获取敏感数据.修改 ...
- 常见前端安全漏洞及防范方法
参考文章: 8大前端安全问题(上) https://insights.thoughtworks.cn/eight-security-problems-in-front-end/ 8大前端安全问题(下) ...
- 常见Web安全漏洞测试指南
任意文件下载 漏洞描述 一些网站由于业务需求,可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载任意的文件,可以是源代码文件.敏感文件等. 测试指南 使用 B ...
- 常见Web安全漏洞--------sql注入
SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库执行一些恶意的操作. 在mybatis 中比较容易出现:${} 会发生sql 注入问题 #{}: 解析为一个 JDBC 预编译语句( ...
最新文章
- 【多标签文本分类】Ensemble Application of Convolutional and Recurrent Neural Networks for Multi-label Text
- Python中bytes和str区别详细介绍
- 小小的 Python 编程故事
- java数组查找算法_JAVA数组中查找算法中equals和==的问题
- node.js安装以及git 的使用说明
- Consistent hashing
- java基础入门(一)
- querydsl动态 sql_JPA整合Querydsl入门篇
- 基于SSM的小区物业管理系统(附源码+论文)
- filezilla server mysql_使用FileZilla Server轻松搭建个人FTP服务器
- java redis令牌桶_Redis令牌桶算法在限速中的应用
- 简单工厂模式(Simple Factory Pattern)【1/23】
- 恢复U盘分区:windows自带工具diskpart
- 重签名ipa步骤及工具
- win10计算机入门使用教程,win10系统使用教程_windows10基本使用教程图文步骤
- 利用flex布局实现六个骰子
- 前后端交互学习笔记(二):Node.js及npm学习
- 1937 年阿尔法罗密欧 8C 2900B Berlinetta获选成为全球最负盛名的车辆
- notifyDataSetInvalidated()和notifyDataSetChanged()的区别
- 友盟的Common的包下载失败,报错Forbidden
热门文章
- jmeter校验结果_JMeter(1)--请求内容验证
- 【备忘】二叉树遍历的迭代实现
- 评分卡模型开发(九)--上线监测
- flume流程之SpoolDir-memory-hdfs
- Spring多个版本源码地址分享
- 国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上
- 如何使用JMeter来实现更大批量的并发的解决方案(即如何设置controller和Agent)
- 自适应网页设计(Responsive Web Design)(转)
- Symantec 不用密码卸载
- centos 6.2 为mysql5.6.10安装 HandlerSocket插件