mkstemp 的 java 等效项

2024-01-07

Java中有什么方法可以安全地写入临时文件吗?

据我所知,创建临时文件(createTempFile)的唯一方法实际上并不同时打开它,因此文件打开和文件写入之间存在竞争条件。我错过了什么吗?我在 UnixFileSystem.java 中找不到 createFileExclusively(String) 背后的 C 源代码,但我怀疑它真的能做任何事情,因为文件打开发生在创建临时文件后的 Java 代码中(除非它尝试使用文件锁?)。

问题

在创建临时文件和打开它之间,恶意攻击者可能会取消该临时文件的链接并将恶意内容放在那里。例如,攻击者可以创建命名管道来读取敏感数据。或者类似地,如果您最终通过读取文件来复制文件,那么命名管道可能会忽略写入的所有内容并提供要读取的恶意内容。

我记得在过去 10 多年里读过许多临时文件攻击的示例,这些示例利用了名称出现在命名空间中和文件实际打开之间的竞争条件。

希望缓解因素是 Java 正确设置了 umask,因此权限较低的用户无法读取/写入该文件,并且通常 /tmp 目录会正确限制权限,以便您无法执行取消链接攻击。

当然,如果您传递一个由受威胁的低权限用户拥有的临时文件的自定义目录,则该用户可能会对您进行取消链接攻击。天哪,使用inotify,利用竞争条件可能比仅仅使用暴力循环来列出目录更容易。


http://kurt.seifried.org/2012/03/14/creating-temporary-files-securely/ http://kurt.seifried.org/2012/03/14/creating-temporary-files-securely/

Java

使用 java.io.File.createTempFile() – 一些有趣的信息http://www.veracode.com/blog/2009/01/how-boring-flaws-become-interesting/ http://www.veracode.com/blog/2009/01/how-boring-flaws-become-interesting/

对于目录,有一个有用的帖子:如何在Java中创建临时目录/文件夹? https://stackoverflow.com/questions/617414/create-a-temporary-directory-in-java

Java 7

对于文件使用 java.io.File.createTempFile()

对于目录使用 createTempDirectory()

http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mkstemp 的 java 等效项 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 在 Java 中克隆对象 [3 个问题]

    这样做会调用Asub的clone方法吗 或者Asub深度克隆是否正确 如果没有的话 有没有办法通过这种方法对Asub进行深度克隆呢 abstract class Top extends TopMost protected Object cl
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 使用 LinkedList 实现下一个和上一个按钮

    这可能是一个愚蠢的问题 但我很难思考清楚 我编写了一个使用 LinkedList 来移动加载的 MIDI 乐器的方法 我想制作一个下一个和一个上一个按钮 以便每次单击该按钮时都会遍历 LinkedList 如果我硬编码itr next or
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 没有 Spring 的自定义 Prometheus 指标

    我需要为 Web 应用程序提供自定义指标 问题是我不能使用 Spring 但我必须使用 jax rs 端点 要求非常简单 想象一下 您有一个包含键值对的映射 其中键是指标名称 值是一个简单的整数 它是一个计数器 代码会是这样的 public
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Eclipse 启动时崩溃;退出代码=13

    I am trying to work with Eclipse Helios on my x64 machine Im pretty sure now that this problem could occur with any ecli
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 使用反射覆盖最终静态字段是否有限制?

    在我的一些单元测试中 我在最终静态字段上的反射中遇到了奇怪的行为 下面是说明我的问题的示例 我有一个基本的 Singleton 类 其中包含一个 Integer public class BasicHolder private static
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem

随机推荐

  • 如何将数据框转换为空间坐标

    我一直在研究具有经纬度值的地震数据 我想将这些经纬度值转换为空间坐标 假设我有以下数据集df longitude latitude 128 6979 7 4197 153 0046 4 7089 104 3261 6 7541 124 90
  • Twitter 超出了 Google 应用引擎的速率限制

    我正在使用谷歌应用程序引擎 并且想从给定用户下载推文 我只是简单地打电话http api twitter com 1 statuses user timeline USERNAME json http api twitter com 1 s
  • 简单的客户端文件处理,无需刷新

    什么叫干净简单JavaScript以下用例的解决方案 在网页上 用户从本地文件系统选择并上传文本文件 但客户端 JavaScript 代码不是将文件加载到服务器 而是打开并处理文件内容 并将结果写入同一页面无需刷新页面 注意 我不需要保留文
  • 无法在 Facebook ios SDK 中获取登录者的电子邮件 ID

    我正在开发一个 Facebook IOS 应用程序 从 Facebook 获取用户数据 公共资料 电子邮件 实施登录过程后 我能够获取用户的名字 姓氏和个人资料图片的 url 但我收到的电子邮件一片空白 我已经通过了获取公开个人资料和 Em
  • iOS 通过代码将默认键盘从 ABC 模式切换到 123 模式?

    我可以通过以下方式了解如何设置键盘的整体类型 self myTextView keyboardType UIKeyboardTypeDefault 如何通过代码将默认键盘模式从 ABC 切换到 123 并再次切换回来 基本上 当用户点击 字
  • scala protected 修饰符转换为 java 类是 public

    在 scala 类中 我定义了一个受保护的字段和一个受保护的方法 TestProtected scala class TestProtected protected var f 0 protected def m 1 在我看来 它将把受保护
  • 将表从 .sql 复制到 .db 文件。艰难地学习 SQL

    我很确定对此有一个简单的答案 但我在任何地方都找不到它 而且似乎自己也无法弄清楚 任何帮助将不胜感激 我正在尝试从 a 复制一个表 sql file ex1 sql 其中有一个基本表 我可以毫无问题地创建这个 但是然后我运行以下命令将此表复
  • 此外,使用现有身份验证对作为 Azure WebApp 托管的 ASP.NET Core MVC 网站进行密码保护

    我有一个带有 ASP NET Core Identity 的现有 ASP NET Core MVC 应用程序 其中我使用了以下组合signInManager PasswordSignInAsync and Authorize 强制用户登录网
  • 如何通过 1 的位置列表解码 0 和 1 的列表?

    我想创建一个List Int 仅包含 0 和 1 数组中定义的 0 和 1 的位置 val bitMask List 2 5 6 11 621 655 bitMask 是结果列表中位置一的列表 结果列表中的项目为零 结果我想得到 resul
  • Python PyEphem 计算方位角和高度

    我是 PyEphem 的新手 我正在尝试弄清楚它可以做什么以及它是如何工作的 由于我不想将其用作黑匣子并盲目相信我得到的任何数字 因此我想重新创建一个解释的示例here http www stargazing net kepler alta
  • 停止读取 Python 中的进程输出而不挂起?

    我有一个适用于 Linux 的 Python 程序 几乎看起来像这样 import os import time process os popen top readlines time sleep 1 os popen killall to
  • 使用 PagedList 和成员资格

    我一直在玩 Troy Goode 的 PagedListhttp pagedlist codeplex com http pagedlist codeplex com 我想知道是否有人已经让它与内置的 asp net 会员部分一起工作 我有
  • 将焦点设置在 xaml wpf 中的文本框上

    尽管这个论坛和其他论坛上有一些帖子 但我找不到一些东西来告诉我如何将焦点放在TextBox 我有一个带有许多标签和文本框的用户控件 加载表单时 我希望特定的文本框具有焦点 我已经设置了 tabIndex 但这似乎不起作用 有什么建议么 您可
  • Symfony 2 中的中间路由可选参数

    需要解决的问题 在 Symfony 2 中是否可以用 定义路由中间的 可选参数 我将使用其他问题数据 https stackoverflow com questions 17059843 routing in symfony2 option
  • ASP.NET MVC:动作过滤器设置控制器变量?

    我有一个场景 对于每个页面请求 我都必须检查会话是否存在特定 ID 如果发现这一点 我必须从数据库中获取相关对象并将其提供给控制器 如果找不到会话 ID 我需要重定向用户 会话已过期 目前 我有一个自定义代码块 几行 它在控制器内的每个操作
  • 防止在插件中创建

    我在服务活动的预创建上注册了一个插件 在插件中 我检查一些条件 如果满足这些条件 我想停止创建服务活动 我想创建另外两个服务活动来代替该服务活动 但我不希望用户收到这一切的通知 有没有办法停止在 CRM 2011 上的插件中创建 SA 记录
  • 如何将 UUID 转换为 base64?

    我想打字UUID并将其输出到Base64编码格式 但是考虑到输入方法Base64并输出UUID如何实现这一点似乎并不明显 update虽然对于我的用例来说不是明确的要求 但最好知道所使用的方法是否使用 UUID 的原始 UUID UUID
  • 使用相同的 docker 映像部署多个 Cloud Run 服务

    有超过 25 个 Cloudrun 服务使用相同的 docker 镜像 来自 GCR 但配置了不同的变量 有什么简单可靠的方法可以使用来自任何类型传入事件的最新容器映像来部署所有服务 目前使用下面的CLI命令来手动执行一一执行 有没有一种自
  • java子类的私有final字段可以在超级构造函数完成之前初始化吗?

    我有一对像这样的课程 public abstract class Class1 public Class1 function2 protected abstract void function2 public class Class2 im
  • mkstemp 的 java 等效项

    Java中有什么方法可以安全地写入临时文件吗 据我所知 创建临时文件 createTempFile 的唯一方法实际上并不同时打开它 因此文件打开和文件写入之间存在竞争条件 我错过了什么吗 我在 UnixFileSystem java 中找不