gpt4 book ai didi

java - 如何防止 Java Web 应用程序中的空字节注入(inject)

转载 作者:行者123 更新时间:2023-12-01 19:05:44 24 4
gpt4 key购买 nike

如何在 java webapp 上完成空字节注入(inject),或者更确切地说 - 如何防止它?

我应该查看请求参数的每个字节并检查其“字节”值是否为 0?我无法想象 0 字节会潜入请求参数...可以吗?

我的主要目标是确保用于保存文件的文件名足够安全。目前,我不寻找建议的答案(例如):用下划线替换所有非单词字符。

最佳答案

允许用户存储具有任意名称的文件是危险的。如果用户提供“../../../WINDOWS/explorer.exe”,会发生什么?您应该限制文件名仅包含已知无害的字符。

'\0' 未知是否无害。就 Java 而言,'\0' 与其他字符一样。但是,操作系统可能会将 '\0' 解释为字符串的结尾。如果字符串从 Java 传递到操作系统,则不同的解释可能会导致可利用的错误。考虑:

if (filename.endsWith(".txt") {
store(filename, data);
}

其中文件名为“C:\Windows\explorer.exe\0.txt”,对于 Java 而言以“.txt”结尾,而对于操作系统而言则以“.exe”结尾。

关于java - 如何防止 Java Web 应用程序中的空字节注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10182261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com