|
|
1
3
可执行性附加到您打开的文件上,没有什么阻止几个文件指向包含您要读取的数据的inode。换句话说,相同的数据可以从同一文件系统中其他地方的不可执行文件中读取。此外,即使在打开文件之后,也不能阻止同一文件的可执行性发生更改,甚至可以取消链接。
正如我所看到的,你能得到的“最大努力”是用
再想一想,如果您是这个文件中数据的原始创建者,您可以考虑首先编写一个从未链接到文件系统的inode,这是通过文件共享内存的一种常见技术。或者,如果所包含的数据最终必须公开给其他用户,则可以使用文件锁定,然后逐步将保护位扩展到需要它的用户。 最终,您必须确保恶意用户对该文件没有写访问权。 |
|
|
2
2
您不能完全解决这个争用条件——例如,在您首先打开然后检查权限的版本中,它是 可能的 权限在您打开文件之后和更改权限之前更改。 如果你能自动地将文件移动到一个潜在坏人无法到达的目录,那么你就可以放心,当你处理文件时,文件的任何内容都不会从你的鼻子下面改变。如果潜在的坏人能接触到 到处 或者你不能把文件移到他们找不到的地方,就没有防御。
顺便说一句,我不清楚这个方案,即使它可以工作,实际上会增加任何安全性——当然,如果坏人可以把有毒的内容放在文件中,它不会超出他们的范围。
|
|
3
0
你能做的最好的是:
当然,也有缺点,但是如果您的用例像您所说的那样简单,它就可以做到这一点。 |
|
|
4
0
您应该更改文件的所有权,这样攻击者就不能访问它“chown-root:root-file_-name”。执行“chmod 700文件名”,这样其他帐户就无法读取/写入/执行该文件。这就避免了toctou的问题,这就是人们如何防止在您的系统上拥有用户帐户的攻击者修改文件。 |
|
5
0
另一种方法是将文件名更改为意外的名称,或者甚至将整个文件(如果文件不太大)复制到临时目录(必要时加密),进行检查,然后重命名/复制文件。 当然,这是一个非常沉重的过程。 但你最终会这样做,因为从一开始就没有为安全设置系统。一个安全的程序会签署或加密他想要保持安全的数据。在你的情况下,这是不可能的。 除非你真的需要大量加密,否则在你无法控制的机器上,没有办法确保100的安全。 |
|
|
deen · 从递归方法调用另一个类的方法:Java 8 年前 |
|
|
nd97 · 读取Bash中可能删除的文件 8 年前 |
|
|
je123 · $.post()可能的竞争条件;重定向问题 8 年前 |
|
|
zackster7171 · C程序在GDB中工作,但不正常 8 年前 |
|
|
Di Wang · 单处理器环境可以防止竞争条件吗? 8 年前 |
|
|
yun · USB音频缓冲区欠载 8 年前 |