删除前确认路径范围和所有权
Resolve confinement and ownership before destruction
路径格式正确还不够;确认目标位于允许范围,且确实可由本次任务删除。
以下示例与示意结果由本站编写,用于说明方法,不是模型实测结果。
使用场景
清理进程参数给出的教学job目录,允许根为jobs/,本轮身份J7。参数可被其他进程写;路径看起来在根下仍可能是符号链接或非本轮目录。
具体做法
将候选与许可根都规范解析,要求目标是严格后代且满足深度,不是根本身。核本轮已认证期望身份与受保护所有权证据,不能信可随意写的.owner。处理检查到操作间替换风险,使用受控不可变层级或平台支持的安全句柄;不满足则拒且不回退更大目录。危险执行只在实际已授权范围。
反例
OS返回jobs/J7就删;目标不存在时改删jobs根,.owner自写J7就认为获准。
改进写法
仅把派生路径当候选,解析链接后核严格范围与受保护J7归属,再按无竞态的实际机制处理。任何缺失、不符或变化都停止,不扩大到父目录。用隔离教学夹具验证,不对真实路径做删除演练。
为什么这样改
路径约束回答在哪里,所有权与授权回答能否操作。先解析再检查和处理竞态,防止看似正确名字指向范围外或别人的数据。
如何验证
教学根本身、外链、错误归属及检查后替换均拒绝;合法本轮子目录才满足候选条件。文件名..cache是合法子名时不能被粗略startsWith误拒。验证使用保护机制,不只字符串形状。
适用边界
不同平台安全句柄和链接语义不同,静态检查无法保证无竞态。自述标记不是认证,摘要也不是许可;缺保护就报告限制。本文未删除或移动任何目标。