当前位置: 首页 > news >正文

Java开发网络安全常见问题

1、敏感信息明文传输

用户敏感信息如手机号、银行卡号、验证码等涉及个人隐私的敏感信息不通过任何加密直接明文传输。

如下图中小红书APP 的手机短信验证码登录接口,此处没有对用户手机号和验证码等信息进行加密传输,可以很简单的截取并开展一些合法的工作。

可以对比下其他的APP,如美团APP 的手机短信验证码登录接口,就不是明文传输。

解决方案 

前后端敏感参数的传递,可以通过加密手段如借助AES 秘钥前后端加解密传输。最简单的用户手机号加密传输如下。

2、弱口令漏洞

这种情况其实很常见,好多后台的管理系统,甚至我之前公司的管理系统现在使用123456这种密码都可以登录进去。

解决方案

  • 很多登录的框架都支持在配置文件开启用户登录密码强度级别和设置默认密码。
  • 使用至少12位的数字、字母及特殊字符组合作为密码。
  • 数据库不要存储明文密码,应存储MD5加密后的密文,由于目前普通的MD5加密已经可以被破解,最好可以多重MD5加密,或者多种加密方式叠加组合。 

3、绕过密码登录直接进入后台

首先,后台登陆验证的逻辑一般的方式都是将用户在登录界面输入的账号密码拿到数据库中的相关用户表做校验,如果输入的账号密码等于数据库中某条记录,则验证通过并且程序会给用户一个sssion,然后进入后台,反之就是返回登陆界面。

出现这种绕过密码登录的情况就是很早之前的典型案例 'or'='or' 漏洞,校验用户登录的SQL如下。

select * from t_user where user_name = '’or‘='or'' And password = '123456789'

如果用户名在登录界面的 用户名 处输入要提交的信息为 'or'='or' ,就会变成如上SQL((假or真or假and(真/假))= 真)执行后得到对象的结果为真,接下来就可以通过重定向进入后台了。

 View Code

解决方案

  • 通过配置,过滤掉无效用户的登录请求。
  • 很早之前才会出现这个漏洞,现在基本上的后台验证都不会使用这类方式,而是取得用户输入的账号和密码,在SQL中先将用户名与数据库中的记录做对比,若数据库中某条记录的用户名等于用户输入的用户名,则取出该条记录中的密码,然后再与用户输入的密码对比。

4、浏览器缓存漏洞

系统正常存在的合法用户在“注销”后,但未关闭浏览器,此时点击浏览器“后退”按钮,可从本地页面缓存中读取数据,绕过了服务端filter过滤。

解决方案

在很多项目的 Config 配置文件中都有发现的如下配置,即配置filter对存放敏感信息的页面限制缓存。

httpResponse.setHeader(“Cache-Control”,“no-cache”);
httpResponse.setHeader(“Cache-Control”,“no-store”);
httpResponse.setDateHeader(“Expires”, 0);
httpResponse.setHeader(“Pragma”,“no-cache”);

5、SQL注入漏洞

在HTTP 请求中注入恶意的SQL 代码,最常见的手段就是在访问URL 后拼接SQL 代码,服务器使用参数构建数据库SQL 命令时,恶意SQL 被一起构造,并在数据库中执行。如下拼接SQL 

String query = “SELECT * FROM t_users WHERE user_id = ’” + request.getParameter(“id”) + “’”; 

如果参数id 中是 or 1=1 ,就会返回所有数据。
解决方案

  • 不要拼接SQL字符串。
  • 使用预编译的PrepareStatement,如。
PreparedStatement pstmt = con.prepareStatement(“SELECT * FROM t_users WHERE u_name = ?”);
pstmt.setString(1, “tjt”);
  • 服务器端校验 (防止攻击者绕过web端请求)。
  • 过滤SQL 参数中的特殊字符,比如单引号、双引号等。

6、文件上传漏洞

在文件上传前端界面,用户上传了一个可执行的脚本文件,并通过此脚本文件获得执行服务端命令的能力。

解决方案

  • 设置文件上传的目录为不可执行。
  • 判断文件类型。在判断文件类型的时候,可以结合使用MIME Type,后缀检查等方式。以及限制上传文件的大小。
  • 对上传的文件类型进行白名单校验,只允许上传可靠类型。
  • 上传的文件需要进行重新命名,使攻击者无法猜想上传文件的访问路径,将极大地增加攻击成本,同时向shell.php.rar.ara这种文件,因为重命名而无法成功实施攻击。
  • 给文件服务器设置单独的域名。

7、WEB 容器漏洞

Tomcat 有一个管理后台,其用户名和密码在Tomcat安装目录下的conf omcat-users.xml文件中配置,很多用户经常采用的是一些弱口令。而Tomcat 又支持在后台部署war包,可以直接将webshell 部署到web目录下,如果tomcat 后台管理用户存在弱口令,这很容易被利用上传webshell。

解决方案

  • 更改其默认路径,口令及密码。
  • Tomcat还有一些其他的漏洞,最有效的防御就是修改配置文件,防止未授权访问、弱口令、PUT方式传文件、readonly等,然后最好更新最新版本的tomcat。

8、XSS 攻击

XSS(cross site scripting,即跨站脚本攻击),将一段Html 和JavaScript 代码注入到用户浏览的网页上。XSS 可以大概分为三类, DomXSS、反射型XSS 和 存储型XSS。

<input type="text" name="name" value="tjt">

在前端界面有很多用户输入字符的操作,如上表单,如果,用户输入的不是一个正常的字符串,而是

"/><script>alert(“tjt-hello-boy-isMe”)</script><!-

然后,JS页面变成下面的内容,在输入框 input 的后面带上了一段脚本代码。

<input type="text" name="name" value="tjt">
<script>alert(“tjt-hello-boy-isMe”)</script><!-"/>

从上可以看出,XSS攻击的威力取决于用户输入的JS 脚本。攻击者提交恶意的JS 代码,客户端没有做xss校验,都会存在客户端注入问题,就会出现这段恶意执行的JS 代码。

解决方案

  • 前后端限制字符串输入的长度限制。
  • 前后端限制对HTML 转义处理,将其中的"<",">"等特殊字符进行转义编码。

9、CSRF 攻击

XSRF Cross-site request forgery,即跨站请求伪造,指攻击者通过跨站请求,以合法的用户身份进行非法操作。攻击者盗用你的身份,以你的名义向第三方网站发送恶意请求。CRSF 能做的事情包括利用你的身份发邮件,发短信,进行交易转账,甚至盗取账号信息,容易造成个人隐私泄露以及财产安全。

早期就会有很多这种网站,挂了很多靓妹的图片或者让人有种想要点击的那些图片,一旦你点击了,其实是打开了一个链接比如发起银行转账请求,而你的浏览器又恰巧登录浏览过该银行并且缓存未失效,不出意外的话意外就发生了。随之后来的隐藏域手段、验证码、二次确认等机制这种攻击案例就少了。

解决方案

  • 使用安全框架,如Apache shiro,Spring Security 等。
  • 结合安全框架充分校验Token,在HTTP 请求中进行token 验证,如果请求中没有token或者token内容不正确,则认为CSRF攻击而拒绝该请求。
  • 验证码二次确认。通常情况下,验证码能够很好的遏制CSRF攻击,但是很多情况下,出于用户体验考虑,验证码只能作为一种辅助手段,而不是最主要的解决方案。
  • 网上还说可以通过 referer识别。在HTTP Header中有一个字段Referer,记录HTTP请求的来源地址。如果Referer是其他网站,就有可能是CSRF攻击,则拒绝该请求。但Referer 信息也极易伪造,窃取HTTP 窃取源地址,Header中添加Referer 字段。

10、DDOS 攻击

DDoS:Distributed Denial of Service,DDOS 攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。它的目的就是利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。
DDoS 攻击是通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的,其具体有下面几种形式:

  • 通过使网络过载来干扰甚至阻断正常的网络通讯;
  • 通过向服务器提交大量请求,使服务器超负荷;
  • 阻断某一用户访问服务器;
  • 阻断某服务与特定系统或个人的通讯。

解决方案

1、监控访问数据、过滤恶意流量,定期检查服务器软件安全漏洞,对外关闭不必要的服务和端口,在服务器防火墙中,只开启使用的端口,比如网站web服务的80端口、数据库的3306端口、SSH服务的22端口等。

2、采用高性能的网络设备,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某种类的DDOS攻击是非常有效的。

3、HTTP请求拦截,如果恶意请求有特征,直接拦截就可以。HTTP请求的特征一般有两种:IP地址和User Agent字段。

4、尽量避免NAT 的使用,因为NAT需要对地址来回转换,会较大降低网络通信能力。

5、足足的网络带宽,带宽直接决定了能抗受攻击的能力,假若仅仅有10M的话,无论采取什么措施都很难对抗现在的DDOS 的 SYNFlood攻击,没钱搞 100M有钱的搞到1000M。

6、将网站做成静态页面或者伪静态,将网站做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还没出现。

7、安装专业抗DDOS 防火墙。

8、备份网站,有一个备份网站,容错率就高很多,生产服务器万一下线了,可以立刻切换到备份网站。

相关文章:

Java开发网络安全常见问题

1、敏感信息明文传输 用户敏感信息如手机号、银行卡号、验证码等涉及个人隐私的敏感信息不通过任何加密直接明文传输。 如下图中小红书APP 的手机短信验证码登录接口&#xff0c;此处没有对用户手机号和验证码等信息进行加密传输&#xff0c;可以很简单的截取并开展一些合法的…...

C#基础之委托,事件

文章目录 1 委托1.1 简介1.2 操作使用1.2.1 声明委托&#xff08;Delegate&#xff09;1.2.2 实例化委托&#xff08;Delegate&#xff09;1.2.3 直接调用和invoke1.2.4 Invoke 和 BeginInvoke 1.3 委托的多播1.4 委托的匿名和lambda1.4.1 匿名方法1.4.2 lambda 表达式 1.5 内置…...

nginx配置静态资源的访问

比如静态资源图片位于/mnt/software/nginx/html/static/images目录下&#xff0c;那么nginx.conf中的配置则为&#xff1a; # 静态文件目录 location /static/images/ { root /mnt/software/nginx/html; try_files $uri $uri/ 404; #找不到时提示404 …...

JS的魔法三角:constructor、prototype与__proto__

在JavaScript中&#xff0c;constructor、prototype和__proto__是与对象创建和继承机制紧密相关的三个概念。理解它们之间的关系对于掌握JavaScript的面向对象编程至关重要。下面将详细介绍这个魔法三角&#xff1a; 1. constructor 定义&#xff1a;constructor是一个函数&am…...

CA系统(file.h---申请认证的处理)

#pragma once #ifndef FILEMANAGER_H #define FILEMANAGER_H #include <string> namespace F_ile {// 读取文件&#xff0c;返回文件内容bool readFilename(const std::string& filePath);bool readFilePubilcpath(const std::string& filePath);bool getNameFro…...

matlab显示sin二维图

1&#xff0c;新建脚本 2、保存脚本 3、脚本命令&#xff1a;clc 清除 脚本命令的信息 clrear all 清除全部 4工作区内容&#xff1a;变量啥的 x0:0.001:2*pi%% 开始 精度 中值 ysin(x) y1cos(x) figure%%产生一个屏幕 plot(x,y)%%打印坐标 title(ysin(x))%%标题 xlabel(…...

验证 kubelet 服务已经停止并且不再生成错误日志

要验证 kubelet 服务已经停止并且不再生成错误日志&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. 检查 kubelet 服务状态 首先&#xff0c;确认 kubelet 服务已经停止。 Bash 深色版本 sudo systemctl status kubelet 你应该看到类似以下的输出&#xff0c;表示服…...

【Linux】进程控制-----进程替换

目录 一、为什么要进行进程替换&#xff1a; 二、进程替换的原理&#xff1a; 三、exec家族&#xff1a; 1、execl&#xff1a; 2、execlp&#xff1a; 3、execv&#xff1a; 4、execvp&#xff1a; 5、execle和execve ​编辑 putenv&#xff1a; 一、为什么要进行进程…...

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本

安装SQL Server 2022提示需要Microsoft .NET Framework 4.7.2 或更高版本。 原因是&#xff1a;当前操作系统版本为Windows Server 2016 Standard版本&#xff0c;其自带的Microsoft .NET Framework 版本为4.6太低&#xff0c;不满足要求。 根据报错的提示&#xff0c;点击链接…...

使用ECharts创建带百分比标注的环形图

在数据可视化领域&#xff0c;环形图是一种非常有效的图表类型&#xff0c;它能够清晰地展示各部分与整体的关系。今天&#xff0c;我们将通过ECharts来创建一个带百分比标注的环形图&#xff0c;并详细解释如何实现这一效果。 1. 数据准备 首先&#xff0c;我们定义了一些基础…...

学习threejs,设置envMap环境贴图创建反光效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.CubeTextureLoader 立…...

go语言里的mkdir mkdirall有什么区别?

在Go语言中&#xff0c;os.Mkdir 和 os.MkdirAll 都是用来创建目录的函数&#xff0c;但它们之间存在一些关键的区别。 ### os.Mkdir - **功能**&#xff1a;os.Mkdir 用于创建一个单一的目录。如果该目录已经存在&#xff0c;则会返回一个错误。 - **参数**&#xff1a; - na…...

使用Python OpenCV实现图像形状检测

目录 一、环境准备 二、读取和预处理图像 读取图像 灰度化 滤波去噪 三、边缘检测 四、查找轮廓 五、绘制轮廓 六、形状分类 七、显示结果 八、完整代码示例 九、总结 图像形状检测是计算机视觉领域中的一项关键技术,广泛应用于工业自动化、机器人视觉、医学图像处…...

继上一篇,设置弹框次数以及自适应图片弹框,部分机型(vivo)老手机不显示的问题

上一篇写的本来测试好多型号都无事, 今天下午公司的战斗机vivo横空冒出… 晕 弹框直接显示都出不来了,现在还有用这种老的机型的,但是没办法咯~ 前端遇到这种兼容性的问题就要勇于解决 主要解决了这几点: // 添加图片加载事件 <imgv-if"imageUrl":src"image…...

基于RISC-V 的代理内核实验(使用ub虚拟机安装基本环境)

1.安装支撑软件 第一步&#xff0c;安装依赖库 RISC-V交叉编译器的执行仍然需要一些本地支撑软件包&#xff0c;可使用以下命令安装&#xff1a; $ sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bis…...

【MMKV】HarmonyOS中的优秀轻量化存储方式

MMKV 引言 在移动应用开发的世界里&#xff0c;数据存储和管理是至关重要的一环。随着技术的不断进步&#xff0c;开发者们对于高性能、轻量级、易用的数据存储解决方案的需求日益增长。MMKV&#xff08;Memory Mapped Key-Value&#xff09;正是这样一个开源的高性能key-val…...

docker安装hadoop环境

一、使用docker搭建基础镜像 1、拉取centos系统镜像 # 我这里使用centos7为例子 docker pull centos:7 2、创建一个dockerfiler文件&#xff0c;用来构建自定义一个有ssh功能的centos镜像 # 基础镜像 FROM centos:7 # 作者 #MAINTAINER hadoop ADD Centos-7.repo /etc/yum.re…...

开源多媒体处理工具ffmpeg是什么?如何安装?使用ffmpeg将M3U8格式转换为MP4

目录 一、FFmpeg是什么二、安装FFmpeg&#xff08;windows&#xff09;三、将M3U8格式转换为MP4格式 一、FFmpeg是什么 FFmpeg是一款非常强大的开源多媒体处理工具&#xff0c;它几乎可以处理所有类型的视频、音频、字幕以及相关的元数据。 FFmpeg的主要用途包括但不限于&…...

算法刷题Day5: BM52 数组中只出现一次的两个数字

描述&#xff1a; 一个整型数组里除了两个数字只出现一次&#xff0c;其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 要求&#xff1a;空间复杂度 O(1)&#xff0c;时间复杂度O(n)。 题目传送门 is here 思路&#xff1a; 方法一&#xff1a;最简单的思路就…...

55 基于单片机的方波频率可调

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 采用STC89C52单片机最小系统&#xff0c;设计DAC0832、放大器、与示波器显示方波&#xff0c;四位数码管显示频率&#xff0c;两个按键可调。 二、硬件资源 基于KEIL5编写C代码&#xff0c;PROT…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...