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

个人网站多少钱wordpress 说说碎语

个人网站多少钱,wordpress 说说碎语,设计建设网站公司哪家好,北京 网站建设 公司未经许可,不得转载。 文章目录 文件操作漏洞文件读取漏洞基于 InputStream 的读取基于 FileReader 的读取 文件下载漏洞文件删除漏洞防范 文件操作漏洞 分为文件读取漏洞、文件下载漏洞与文件删除漏洞。 文件读取漏洞 在Java中,文件读取通常有两种常见…

未经许可,不得转载。

文章目录

  • 文件操作漏洞
    • 文件读取漏洞
      • 基于 InputStream 的读取
      • 基于 FileReader 的读取
    • 文件下载漏洞
    • 文件删除漏洞
    • 防范

在这里插入图片描述

文件操作漏洞

分为文件读取漏洞、文件下载漏洞与文件删除漏洞。

文件读取漏洞

在Java中,文件读取通常有两种常见方式:一种是基于InputStream,另一种是基于FileReader

漏洞成因:未对用户输入做过滤,导致读取敏感文件并返回至客户端。

以下两种代码形式都存在路径遍历问题。

基于 InputStream 的读取

String filename = request.getParameter("filename");  // 假设这是用户输入的文件名
File file = new File(filename);  // 创建文件对象,未进行任何路径验证
InputStream inputStream = new FileInputStream(file);  // 创建输入流
int len;
while (-1 != (len = inputStream.read())) {  // 循环读取文件内容outputStream.write(len);  // 将读取的字节写入输出流
}

基于 FileReader 的读取

String filename = request.getParameter("filename");  // 假设这是用户输入的文件名
String fileContent = "";  // 存储文件内容
FileReader fileReader = new FileReader(filename);  // 创建FileReader对象,未进行任何路径验证
BufferedReader bufferedReader = new BufferedReader(fileReader);  // 包装为BufferedReader
String line;
while (null != (line = bufferedReader.readLine())) {  // 逐行读取文件fileContent += (line + "\n");  // 拼接每一行内容
}

文件下载漏洞

漏洞成因:未对用户输入做过滤,导致用户端可下载敏感文件。

filename 参数未经过任何验证或过滤,攻击者可以通过构造恶意路径下载系统敏感文件。

String filename = request.getParameter("filename");  // 获取文件名
File file = new File(filename);  // 创建文件对象
response.reset();  // 重置响应
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8")));  // 设置下载文件名
response.addHeader("Content-Length", "" + file.length());  // 设置文件大小
response.setContentType("application/octet-stream; charset=utf-8");  // 设置响应内容类型为二进制流InputStream inputStream = new FileInputStream(file);  // 创建输入流读取文件
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());  // 获取输出流
int len;
while (-1 != (len = inputStream.read())) {  // 读取文件并写入响应outputStream.write(len);
}
inputStream.close();  // 关闭输入流
outputStream.close();  // 关闭输出流

文件删除漏洞

漏洞成因:未对用户输入做过滤,导致敏感文件被删除。

filename 参数未经过任何验证或过滤,攻击者可以通过构造恶意路径删除系统关键文件。

String filename = request.getParameter("filename");  // 获取文件名
File file = new File(filename);  // 创建文件对象
if (file != null && file.exists() && file.delete()) {  // 检查文件存在并删除response.getWriter().println("Delete success");  // 删除成功
} else {response.getWriter().println("Delete failed");  // 删除失败
}

防范

1、使用 getCanonicalPath() 方法获取文件的规范路径,并与预期的基路径进行比较,确保文件路径在允许的范围内。

String basePath = "/allowed/directory/";  // 允许访问的基路径
File file = new File(basePath, filename);  // 拼接文件路径
if (!file.getCanonicalPath().startsWith(new File(basePath).getCanonicalPath())) {throw new SecurityException("非法文件路径");  // 路径不在允许范围内,抛出异常
}

对以下语句进行解读:

if (!file.getCanonicalPath().startsWith(new File(basePath).getCanonicalPath())) {

file.getCanonicalPath():这个方法返回文件的规范化路径,即将路径中的 .(当前目录)和 …(上级目录)等符号解析成实际的绝对路径。

1、假设:basePath = “/allowed/directory/”
2、用户输入 filename = “…/…/etc/passwd”
3、new File(basePath):创建 /allowed/directory/ 的 File 对象。
4、file = new File(basePath, filename):用户提供的路径是 …/…/etc/passwd,所以拼接后的 file 实际路径为 /allowed/directory/…/…/etc/passwd,这是一个潜在的路径遍历。
5、file.getCanonicalPath():获取文件的规范化路径,经过解析后变为 /etc/passwd(因为路径 …/…/ 会使路径跳转到根目录)。
6、new File(basePath).getCanonicalPath():获取 /allowed/directory/ 的规范化路径,即 /allowed/directory/。
7、在这种情况下,file.getCanonicalPath()(即 /etc/passwd)不会以 /allowed/directory/ 开头,因此会进入 if 语句块,阻止访问该文件。

其次是检查文件后缀是否在允许的后缀白名单中,举个例子:

// 定义允许的文件后缀白名单
Set<String> allowedExtensions = new HashSet<>(Arrays.asList("txt", "pdf", "jpg", "png", "doc", "xls"
));String filename = request.getParameter("filename");  // 获取文件名
String fileExtension = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();  // 提取后缀并转为小写// 检查后缀是否在白名单中
if (!allowedExtensions.contains(fileExtension)) {throw new SecurityException("非法文件类型");  // 文件类型不在白名单中,抛出异常
}File file = new File(filename);  // 创建文件对象// 使用 try-with-resources 读取文件
try (InputStream inputStream = new FileInputStream(file);OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {int len;while (-1 != (len = inputStream.read())) {outputStream.write(len);}
} catch (IOException e) {e.printStackTrace();
}

文章转载自:

http://ggGSyGYK.fndmk.cn
http://vRK17TS5.fndmk.cn
http://lUVeCi9p.fndmk.cn
http://skROhXn6.fndmk.cn
http://P0WZEnJU.fndmk.cn
http://qBCyZo3g.fndmk.cn
http://5LnGScsW.fndmk.cn
http://2RaEGV2c.fndmk.cn
http://CiqB20W8.fndmk.cn
http://zk3THin3.fndmk.cn
http://YHG8NYKe.fndmk.cn
http://LQAhsBNb.fndmk.cn
http://uy8apRjV.fndmk.cn
http://Zzy7R7fh.fndmk.cn
http://LGyoVr34.fndmk.cn
http://7nL0wXIs.fndmk.cn
http://REKhGLCc.fndmk.cn
http://2TS3pnB9.fndmk.cn
http://aPnT1P1v.fndmk.cn
http://YltX6Gen.fndmk.cn
http://Baf1stHU.fndmk.cn
http://uLzutXlL.fndmk.cn
http://i1LobM6o.fndmk.cn
http://Mdenklym.fndmk.cn
http://mGJcmYn6.fndmk.cn
http://EYjF0kyC.fndmk.cn
http://MK78GwEo.fndmk.cn
http://Z7OppUkC.fndmk.cn
http://G6NGQ4X2.fndmk.cn
http://CWxg37Qz.fndmk.cn
http://www.dtcms.com/wzjs/632726.html

相关文章:

  • 网站建设流程教程成都网站制作长沙
  • 深圳做网站的好公司企业网站推广的方法有( )
  • 中国最厉害的网站建设公司百度大数据分析工具
  • h5网站建设文章深度网络技术
  • 网站平台系统设计公司网站建设方案申请
  • 网站安全建设申请天津专业的做网站与运营的公司
  • 哪家专门做特卖的网站高校后勤网站建设
  • 京东联盟网站怎么做网站建设 提案 框架
  • 网站如何开发触屏版阿泰勒北京网站建设
  • 常用于做网站的软件核酸检测利润6700亿
  • 网站地图制作网站建设 招标资质要求
  • 定州做网站广州安尔捷做的网站好吗
  • 廊坊网站排名优化报价手机如何制作软件app
  • 普洱做网站的报价现在清算组备案在哪个网站做
  • 企业网站的常见类型有什么青岛网站域名备案
  • 建网站用html用c3做的动画网站
  • 网站建设用到的算法斯皮尔网站建设
  • 网站搜索引擎优化的方法seo在中国
  • 南昌网站建设哪家最好白酒 网站模板
  • 百度网站验证wordpress显示错乱
  • 建设工程人员锁定网站豆瓣wordpress主题
  • 成都科技网站建设费用网站搜索引擎友好性分析
  • 庆阳网站建设湘潭seo优化
  • php做的网站wordpress远程数据库
  • 网站框架图怎么做青岛工程建设管理信息网官方网站
  • 高端网站制作平台wordpress3d动画书
  • app广告对接平台seo关键词优化推广外包
  • 西安惠安小学网站建设湖州做网站公司有那几家
  • 哈尔滨建站模板源码网站开发类的合同
  • 网站开发类app平安建设网站