热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

常见JavaWeb安全问题和解决方案

这篇文章主要介绍了常见JavaWeb安全问题和解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1.SQL注入:程序向后台数据库传递SQL时,用户提交的数据直接拼接到SQL语句中并执行,从而导入SQL注入攻击。

字符型注入:黑色部分为拼接的问题参数

select * from t_user where name='test' or '1' = '1';

数字型注入:黑色部分为拼接的问题参数(对于强类型语言,字符串转int类型会抛异常。所以这种注入方式一般出现在php等弱类型语言上)

select * from t_user where id=1;drop table t_userinfo;

搜索型注入:对表名进行猜测

select * from t_user where userName like ‘%test%' and 1=2 union select 1,2 from t_admin';

修复方法:

a、在mybatis中使用#把参数当做一个字符串,不能使用$符号

b、在JDBC中使用预编译的方式对参数进行绑定,详细如下:

String userName = request.getParameter("userName");
String sql = "select * from t_user where userName = ?";
JdbcConnection cOnn= new JdbcConnection();
PreparedStatement pstmt = conn.preparedStatement(sql);
pstmt.setString(1,userName);

2、XSS跨站脚本攻击(恶意将脚本代码植入到供其他用户使用的页面中)

反射型:经过后端,不经过数据库

存储型:经过后端经过数据库

DOM型:基于文档对象模型DOM,通过控制url参数触发

修复方法:

a、后台设置XSSFilter,继承RequestServletWrapper类,对前端请求中的可控参数进行过滤

b、服务端设置Http-only安全属性,使浏览器控制COOKIE不被泄露

c、对引入到DOM中的参数使用htmlEncodeByRegExp编码,在对应的展示框中用htmlDecodeByRegExp进行解码(比较常用)

var HtmlUtil = {
   /*1.用正则表达式实现html转码*/
   htmlEncodeByRegExp:function (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,""");
     return s; 
  },
  /*2.用正则表达式实现html解码*/
  htmlDecodeByRegExp:function (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,"\"");
     return s; 
 }
};

3、敏感信息泄露

程序造成的泄露:

  1、服务端返回冗余敏感数据:用户只申请了单个账户的信息,却返回了多个用户的信息

  2、将敏感信息直接写在前端页面的注释中

  3、写在配置文件的密码未进行编码处理

  4、请求参数敏感信息未脱敏处理(可以将数据在前端用RSA加密,后台在进行解密)

  5、前端展示的敏感信息,没有在后台进行脱敏处理(后台对数据进行处理,可以将中间部分使用*号代替)

  6、越权

4、越权:攻击者能够执行本身没有资格执行的权限

  水平越权:权限类型不变,权限Id变化(同等角色下的用户,不但能够访问自己私有的数据,还能访问其他人私有的数据)

  垂直越权:权限ID不变,权限类型变化(即低权限的角色通过一些途径,获得高权限的能力)

  交叉越权:上面两者的交集

修复方法:

  1、根据请求携带的用户信息进行鉴权操作,对当前请求携带的用户信息进行用户角色和数据权限匹配。每一个重要操作的功能、分步操作的每个阶段都进行权限判断。权限不足就中断操作。

5、文件下载:

任意文件下载:下载服务器的任意文件,web业务的代码,服务器和系统的具体配置信息,也可以下载数据库的配置信息,以及对内网的信息探测等等

文件越权下载:

修复方法:

1、针对任意文件下载的修复,增加当前请求下载的文件上一级的绝对路径同配置文件中允许下载的路径直接的比较(file.getCanonicalFile().getParent()获取上一级的绝对路径)

if(!file.getCanonicalFile().getParent().equals(new File(Constants.TMP_PATH).getCanonicalPath())){
return ;
}

2、文件越权下载:允许下载之前对请求所带的用户信息进行判断,拥有足够的权限菜允许下载。

6、文件上传:网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。

修复方法:

1、客户端、服务端白名单验证(不建议用黑名单),客户端的校验不够安全,很容易被绕过。

String fileName = file.getOriginalFilename();
String extName = fileName.subString(fileName.lastIndexof(".")+1);

获取上传文件的后缀名,并同白名单上的后缀名进行比较,包含在白名单上则允许通过,不包含则直接中断请求。

2、MiME类型检测:文件上传时浏览器会在Header中添加MIMETYPE识别文件类型,服务端要对此进行检测。

String mime = file.getContentType();//获取文件的ContentType类型值

同白名单上的contentType类型名进行比较,包含在白名单上则允许通过,不包含则直接中断请求。

3、文件内容检测:用不同的方法将不同的文件内容流的进行读取。

BufferedImage image = ImageIO.read(file.getInputStream());

7、CSRF:跨站请求伪造,完成CSRF攻击,需要完成两个步骤:1、登录受信任的网站A,并在本地生成COOKIE;2、在不登出A的情况下,访问危险网站B

CSRF本质原因:Web的隐式身份验证机制。Web的身份验证机制虽然可以保证请求来自用户的浏览器,但是无法保证该请求时用户批准发送的。

修复方法:

CSRF Token校验:在页面中添加一个hidden用于存放token字段,请求发送时携带token到服务端,服务端校验token值是否准确。不准确直接中断操作

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 这座城市多了十只伤心的鸽
    这个作业属于哪个课程2021春软件工程实践|W班(福州大学)这个作业要求在哪里团队第四次作业这个作业的目标设计项目原型、制作项目需求规格说明书团队名称这座城市多了十只伤心的鸽其他参 ... [详细]
  • 前端跨域访问后端数据的方法
    参考链接:https:mp.weixin.qq.coms4G_27oRLSMMYBFvtYZgqcg一、什么是跨域当两个域名的协议、子域名、主域名、端口号中有任意一个不 ... [详细]
  • php生成shtml类用法的简单介绍
    本文目录一览:1、phpcmsv9怎么生成shtml ... [详细]
  • 20155317王新玮《网络对抗技术》实验8 WEB基础实践
    20155317王新玮《网络对抗技术》实验8 WEB基础实践 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 弹性云服务器ECS弹性云服务器(ElasticCloudServer)是一种可随时自助获取、可弹性伸缩的云服务器,帮助用户打造可靠、安全、灵活、高效的应用环境 ... [详细]
  • 开发笔记:讲给前端的网络安全: 网络模型与攻击手段
    本文由编程笔记#小编为大家整理,主要介绍了讲给前端的网络安全:网络模型与攻击手段相关的知识,希望对你有一定的参考价值。 ... [详细]
  • laravel怎么关闭csrf验证
    php框架|Laravellaravelphp框架-Laravel在线生成php源码,vscode怎么解除注释,ubuntu进入后,tomcat放在哪了,爬虫美图,php打包工具, ... [详细]
  • XSS 漏洞绕过
    Web安全攻防学习笔记 ... [详细]
  • 最近在准备比赛,打sqlilabs时看了一下sqlmap的wiki,发现了–csrf-token和–csrf-url的参数,于是写了个ph ... [详细]
author-avatar
權yzq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有