java web系统的常见安全问题

news2024/12/22 18:19:10

一、背景

  java开发的系统在发布到互联网后都需要进行安全扫描,本文主要总结开发web系统需要注意的与系统安全相关的问题。因为在做需求开发时,很少产品会将系统安全的因素考虑在内,总觉得实现个需求很简单,就是一些页面,一些接口。以至于在构筑安全的逻辑上没给工时,开发人员也没想太多去实现这些有必要有看不见的东西。所以一般就变成了系统上线后,发现安全问题,再返工补漏洞的现象。显得非常不专业。

二、web系统安全类别

1、数据安全

前端敏感信息暴露

数据库敏感数据暴露

2、认证安全

接口权限认证

3、身份安全

验证码防范

短信验证码防范

4、会话安全

cookie信息安全

session信息安全

5、访问控制安全

水平越权防范

垂直越权防范

随机的数据过短防范

6、输入输出认证安全

文件上传下载漏洞

服务器目录遍历

SQL注入

代码注入

URL被重定向

三、安全编码原则

1、安全异常处理原则

2、安全日志记录原则

3、输入验证,输出编码原则

4、最小权限原则

5、防御性编程原则

四、如何防护

1、sql注入防护

参数化查询语句:要防御 SQL 注入,用户的输入就不能直接拼接在 SQL 语句当中。使用参数化的查询语句,用户的输入就被限制于一个参数当中。

错误消息处理:防范 SQL 注入,还要避免出现一些详细的错误消息,恶意攻击者往往会利用这些报错信息来判断后台 SQL 的拼接形式,甚至是直接利用这些报错注入将数据库中的数据通过报错信息显示出来。

最小权限原则:准确说,最小权限原则不是应用编码范畴的工作,而是DBA应遵循的安全管理原则, 并且最小权限原则本身并不能阻止产生SQL注入漏洞,而是一旦存在SQL注入漏洞,可以降低SQL注入造成的危害

2、越权防护

在web应用中,根据访问客体的不同,常见的访问控制可以分为“基于URL的访问控制”、“基于方法 (method)的访问控制”、“基于数据的访问控制”。越权访问漏洞主要有垂直越权和水平越权。  • 垂直越权漏洞,也称权限提升漏洞,由于Web应用程序没有做权限控制或者仅在菜单上做了权限控制,导致 的恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升目 的。 • 水平越权漏洞,Web应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或判断数据所属 人时,从用户提交的request参数(用户可控数据)中,获取了数据所属人id,导致恶意攻击者可以通过变 换数据id,或变换所属人id,修改不属于自己的数据。恶意用户可以删除或修改其他人数据。 • OWASP TOP 10 A5 失效的访问控制 • 未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问 其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

3、路径遍历防护

 路径遍历是指应用程序接收了未经合理校验的用户参数用于进行与文件读取查看相关操作,而该参数包含了特殊的字符(例如“..”、“./”、“.\\”和“:”),使用了这类特殊字符可以摆 脱受保护的限制,越权访问一些受保护的文件、目录或者覆盖敏感数据

4、恶意文件上传防护

由于业务需要,应用程序通常允许用户上传图片或附件,如果程序没有对上传的文件进行检查 的话,攻击者可能会通过上传文件的功能上传一些恶意文件,如 webshell、病毒文件等,可直接获取用户服务器权限或执行恶意脚本、挂黑页等操作。 • 如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行,导致终端感染 病毒或木马。 • 如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。 • 攻击者直接上传一个webshell到服务器上,完全控制系统或致使系统瘫痪。 • 攻击者上传大文件到服务器,占用带宽、存储空间,资源耗尽会导致拒绝服务器攻击。

文件上传可以参考以下安全需求进行处理: 1、 服务器配置: (1)将上传目录和上传文件设置为不可执行, 杜绝脚本执行。 (2)应保证服务器安全,避免文件解析漏洞。 2、在服务端对上传文件进行检查: (1)使用白名单控制上传文件类型,即只允许指定扩展名的文件上传。 (2)对上传文件后缀与MIME Type进行匹配校验, 对文件头信息与文件后缀进行匹配校验。 (3)对单个文件大小和总文件数进行限制, 避免拒绝服务攻击 (4)对文件名进行输入校验,显示时进行输出编码。 3、文件存储: (1)上传文件应保存在指定路径下。 (2)对上传文件进行随机数重命名,避免文件被覆盖。 (3)设置上传文件路径, 使用户不能轻易访问自己上传的文件 。 (4) 文件应尽量保存在内容服务器或web目录外部,避免通过web应用直接访问上传的文件。 4、对于图片文件进行二次渲染、压缩, 避免图片写马。 5、校验失败后,记录错误日志信息,内容至少包括时间、用户、IP、操作内容、校验失败的参数及参数内容等。 上传临时文件处理:单个文件夹下文件过多,会导致访问速度下降,建议分散储存,如根据文件名哈希按首字母建立子目录;

5、弱密码防护

 通常认为容易被别人 猜测到或被破解工具破解的口令均为弱口令。 • 弱口令通常危害为数据泄露,当攻击者获取用户口令后,能以用户的身份登录系统、访问数据库、访问操作系统文件等,用户账户所具备的数据权限,攻击者均可查阅。例如查询账户余额,查询数据库表记录,查询服务器敏感文件信息等。 • 执行非法操作,攻击者破解用户口令后,可执行权限范围内的功能操作,例如转账、发表非法言论、篡改删除数据库数据、修改删除服务器文件等。

基本的密码规则:

	/**
	 * 校验复杂度
	 */
	public Boolean checkPWD(String PWD) {

		// 规定的正则表达式
		// (?![a-zA-Z]+$) 表示 字符串不能完全由大小写字母组成
		// (?![A-Z0-9]+$) 表示 字符串不能完全由大写字母和数字组成
		// (?![A-Z\W_]+$) 表示 字符串不能完全由大写字母和特殊字符组成
		// (?![a-z0-9]+$) 表示 字符串不能完全由小写字母和数字组成
		// (?![a-z\W_]+$) 表示 字符串不能完全由小写字母和特殊字符组成
		// (?![0-9\W_]+$) 表示 字符串不能完全由数字和特殊字符组成
		// [a-zA-Z0-9\W_]{8,} 表示 字符串应该匹配大小写字母、数字和特殊字符,至少匹配8次
		String regex = "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![a-z0-9]+$)(?![A-Z\\W_]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,}$";

		return ReUtil.isMatch(regex, PWD);
	}

6、验证码防护

服务器端未对验证码有效性进行校验,导致验证码绕过。 通常出现的安全问题如下: 验证码前端校验 验证码重复使用 验证码暴力破解

修复建议:  1、服务器端对验证码校验;  2、限制请求次数和请求频率。  3、验证码使用一次后,销毁验证码session,防止验证码多次使用;

四、常见漏洞与修复方法

Java Web系统的常见安全问题及其修复方法如下:

  1. 弱口令漏洞:

    • 问题:使用简单密码,如123456、admin等,容易被猜测和破解。
    • 修复方法:使用至少6位的数字、字母及特殊字符组合作为密码,并定期更换密码。
  2. 未使用用户名及密码登录后台可直接输入后台URL登录系统:

    • 问题:用户无需输入用户名和密码即可访问后台系统。
    • 修复方法:通过配置filter来过滤掉无效用户的连接请求。
  3. JSP页面抛出的异常可能暴露程序信息:

    • 问题:有经验的入侵者可以从JSP程序的异常中获取很多信息,如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等。
    • 修复方法:自定义一个Exception,将异常信息包装起来不要抛到页面上。
  4. 合法用户“注销”后,在未关闭浏览器的情况下,点击浏览器“后退”按钮,可从本地页面缓存中读取数据,绕过了服务端filter过滤:

    • 问题:合法用户注销后,其数据仍可能被从本地页面缓存中读取。
    • 修复方法:配置filter对存放敏感信息的页面限制页面缓存。

此外,Java Web系统还可能存在其他安全问题,如SQL注入、跨站脚本攻击(XSS)等。为了确保系统的安全性,建议采取以下措施:

  1. 对用户输入进行严格的验证和过滤,防止SQL注入和XSS攻击。
  2. 使用HTTPS协议进行通信,确保数据传输的安全性。
  3. 对敏感数据进行加密存储和传输。
  4. 定期更新和修补系统漏洞,确保系统的安全性。
  5. 定期备份数据,以防止数据丢失和损坏。
  6. 限制服务器的访问权限,确保只有授权用户可以访问系统。
  7. 采用安全的密码策略,避免使用弱密码。
  8. 对系统日志进行监控和分析,及时发现异常行为和攻击尝试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1313565.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—131.分割回文串【中等】

2023每日刷题&#xff08;五十九&#xff09; Leetcode—131.分割回文串 算法思想 实现代码 class Solution { public:bool isPalindrome(string s, int left, int right) {while(left < right) {if(s[left] ! s[right--]) {return false;}}return true;}vector<vector…

云服务配置docker镜像容器以及常用操作命令

首先通过ssh进入云服务器。如何ssh进入云服务器。 简单讲解一下docker中镜像和容器&#xff0c;打个比方&#xff0c;镜像相当于印钱的那个模板&#xff0c;容器相当于从模板上拓下来的钱&#xff0c;不同的模板可以印出不同的钱。但容器被修改后也可以变成新的镜像&#xff0…

flink yarn-session 启动失败retrying connect to server 0.0.0.0/0.0.0.0:8032

原因分析&#xff0c;启动yarn-session.sh&#xff0c;会向resourcemanager的端口8032发起请求&#xff1a; 但是一直无法请求到8032端口&#xff0c;触发重试机制会不断尝试 备注&#xff1a;此问题出现时&#xff0c;我的环境ambari部署的HA 高可用hadoop&#xff0c;三个节点…

Amortized Bootstrapping of LWE:使用 BFV 打包处理

参考文献&#xff1a; [AP13] Alperin-Sheriff J, Peikert C. Practical bootstrapping in quasilinear time[C]//Annual Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2013: 1-20.[MS18] Micciancio D, Sorrell J. Ring packing and amortized F…

电源适配器老化测试方法分享 电源测试系统助力老化测试

电源适配器老化测试是指对适配器进行高负荷、长时间的运行测试&#xff0c;从而评估电源适配器的性能、稳定性和可靠性。通过老化测试可以检测电源适配器长时间的使用情况&#xff0c;从而指导适配器的设计和研发&#xff0c;提高电源适配器的质量。由于老化测试要求长时间运行…

DVGO 代码阅读

BBx 的大小范围是 根据 相机的 位姿来构建的&#xff0c;会刚好 Cover 相机的移动范围&#xff0c;相当于 StreetSurf 里面的 close-range 的部分&#xff0c;代码在compute_bbox_by_cam_frustrm_unbounded 这个函数里面&#xff1a; xyz_min, xyz_max _compute_bbox_by_cam_f…

如何为您的企业制定客户服务政策(7个步骤+免费模板)

当企业制定客户服务政策时&#xff0c;其核心目标是调整客户期望&#xff0c;并建立精确的程序和政策来促进这一目标。这些书面政策作为员工指南&#xff0c;概述了公司的期望&#xff0c;并为处理各种情况提供了框架。通过全面了解客户服务政策并掌握创建有效政策的方法&#…

LVS 负载均衡群集 NAT

目录 企业群集应用概述 群集的含义 企业群集分类 根据群集所针对的目标差异&#xff0c;可分为三种类型 负载均衡群集(Load Balance Cluster) 高可用群集(High Availability Ciuster) 高性能运算群集 (High Performance Computer Cluster) 负载均衡群集架构 负载均衡的…

炒股怎么做杠杆?安全正规的融资融券了解一下!

加杠杆炒股是指放大投资资金进行股票交易&#xff0c;比如自有资金100万&#xff0c;向证券公司融资100万&#xff0c;那么投资者炒股的本金就有200万。当股市行情好的时候可以放大我们的收益&#xff01; 目前我国股票加杠杆通过融资融券来实现&#xff0c;这个是唯一安全正规…

协作办公原来如此简单?详解 ONLYOFFICE 协作空间 2.0 更新

协作办公原来如此简单&#xff1f;详解 ONLYOFFICE 协作空间 2.0 更新 上周&#xff0c;ONLYOFFICE 的协作空间推出升级版 2.0 版本了&#xff1a; ONLYOFFICE 协作空间 2.0 现已发布&#xff1a;新增公共房间、插件、重新分配数据、RTL 界面等功能 ONLYOFFICE 协作空间是去…

chromium硬件加速播放video观察(intel630和Mali G610)

Intel UHD Graphics 630 Intel(R) UHD Graphics 630驱动程序版本: 27.20.100.8935 驱动程序日期: 2020/10/28 DirectX 版本: 12 (FL 12.1) 物理位置&#xff1a; PCI 总线 0、设备 2、功能 0利用率 2% 专用 GPU 内存 共享 GPU 内存 0.3/7.9 GB GPU 内存…

JDK21+HADOOP3.2.2+Windows安装步骤

哈哈哈 最近转战大数据这块了&#xff0c;分享一下hadoop3.2.2的安装步骤 借鉴了不少大佬的文章&#xff0c;如有雷同&#xff0c;都是大佬们的 1.JDK安装 我选择的是JDK21 以下是下载网址和截图&#xff0c;这个没有太多的&#xff0c;一般下载最新的就可以 JDK: Java Down…

C++相关闲碎记录(13)

1、排序算法 &#xff08;1&#xff09;对所有元素排序sort(), stable_sort() #include "algostuff.hpp"using namespace std;int main() {deque<int> coll;INSERT_ELEMENTS(coll, 1, 9);INSERT_ELEMENTS(coll, 1, 9);PRINT_ELEMENTS(coll, "on entry: …

俄罗斯军方计划用 Astra Linux 取代 Windows!

网络安全正在改变全球化的面貌&#xff0c;各国政府为了防范外国的间谍和破坏活动&#xff0c;正积极发展自己的技术。在这一趋势下&#xff0c;俄罗斯军方已经开始用 Linux 发行版 Astra Linux 替换 Windows 系统。 如何提高Linux系统安全性&#xff1f;提升Linux安全的关键策…

紫禁城的雪花飞舞

在寂静的冬日&#xff0c;紫禁城迎来了它最美丽的时刻。一场突如其来的大雪&#xff0c;将故宫的每一砖每一瓦都覆盖在白色的雪被之下&#xff0c;仿佛将历史的痕迹都掩藏在一片纯净之中。 雪花纷纷扬扬&#xff0c;宛如历史的画卷在眼前徐徐展开。每一片雪花都像是从古人的诗…

设计原则 | 接口隔离原则

一、接口隔离原则 1、原理 客户端不应该依赖它不需要的接口&#xff0c;即一个类对另一个类的依赖应该建立在最小的接口上。如果强迫客户端依赖于那些它们不使用的接口&#xff0c;那么客户端就面临着这个未使用的接口的改变所带来的变更&#xff0c;这无意间导致了客户程序之…

高德地图+Vue中使用出现的问题

最近在做高德地图的逆向地理编码API出现了问题 按着官方的方式写代码运行时出现了问题&#xff0c;随后问了技术人员。 添加之后成功运行

Oracle数据库本地部署结合内网穿透实现公网环境PLSQL远程访问

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…

基于电子密码锁具有掉电存储系统设计

**单片机设计介绍&#xff0c;基于电子密码锁具有掉电存储系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 电子密码锁是一种使用电子技术实现开关门的装置&#xff0c;通常由密码输入板、电控锁、控制电路等组成。其中&a…

IPO:激光雷达迈向规模量产期,估值百亿的速腾聚创将如何通关?

智能驾驶大热&#xff0c;激光雷达为何“得宠”&#xff1f; 激光雷达作为智能驾驶汽车的“隐形安全气囊”&#xff0c;目前被业内普遍认为是实现高阶智能辅助驾驶&#xff08;城市NOA&#xff09;的捷径&#xff0c;其刚需性也越来越凸显。 因此&#xff0c;速腾聚创作为目前…