Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security Rust中是否有安全/消毒的文件名函数_Security_Rust_Filenames_Sanitization - Fatal编程技术网

Security Rust中是否有安全/消毒的文件名函数

Security Rust中是否有安全/消毒的文件名函数,security,rust,filenames,sanitization,Security,Rust,Filenames,Sanitization,考虑到滚动自己的文件通常不是一个好的安全想法,Rust中是否有一个板条箱或库函数来清理文件名?最近的“nul”板条箱表明存在一些特定于操作系统的陷阱。安全性主要取决于您的威胁模型 如果您只是想避免文件系统因错误的文件名而损坏,那么有一个好消息,您不需要做任何事情,因为文件系统API将拒绝带有错误的无效名称。尽管如果您想要文件名而不是路径,您必须小心不要使用采用AsRef或条带路径分隔符(请参见std::path::is_separator)的API,因为它们将接受绝对或相对路径 如果您需要处理来

考虑到滚动自己的文件通常不是一个好的安全想法,Rust中是否有一个板条箱或库函数来清理文件名?最近的“nul”板条箱表明存在一些特定于操作系统的陷阱。

安全性主要取决于您的威胁模型

如果您只是想避免文件系统因错误的文件名而损坏,那么有一个好消息,您不需要做任何事情,因为文件系统API将拒绝带有错误的无效名称。尽管如果您想要文件名而不是路径,您必须小心不要使用采用
AsRef
或条带路径分隔符(请参见
std::path::is_separator
)的API,因为它们将接受绝对或相对路径

如果您需要处理来自不受信任输入的相对路径,您至少必须剥离
路径以停止目录遍历攻击

如果您想避免对人而不是软件的攻击,则必须进行大量清理,例如删除Unicode文本方向覆盖,这可能会在文件扩展名方面误导用户

最近的“nul”板条箱表明存在一些特定于操作系统的陷阱


这不是一个在特定平台上不安全的问题。这里的问题是跨平台兼容性。在UNIX系统上工作的某些东西不能很好地转换到Windows系统。但是Windows系统安全地失败了,它只是导致了一个错误,Cargo用一种特殊的方式处理了这个错误(停止更新)。它可以选择以不同的方式处理故障,例如跳过某个特定的板条箱或损坏文件名。

您能否详细说明此函数的具体功能?确定给定的文件名是否有潜在危险?还是别的什么?也许有一些例子?:)考虑到使用的文件系统的数量和广度,以及它们的工作方式,我不确定是否可以编写这样的代码。例如,
nul
不是Windows的问题,而是Git的编写方式的问题。写在macOS上时会进行规范化的文件名是否危险?可以解释为开关的文件?在哪些操作系统上,使用哪些shell?空间危险吗?无效字符?你的底线在哪里?虽然操作系统会告诉你一个文件名是否合法,但它不会指出应该以何种方式转换输入,使输入成为合法的文件名。是否存在与.net的IO.Path.GetInvalidFileNameChars等效的文件,以便可以从操作系统中知道什么是合法的?同意,没有任何不安全的地方。我只是暗示剥离/更改无效字符是必要的,但并不总是足以使文件名有效。