![]() |
1
1
最终,您将试图通过查找几个子字符串来确定URL解析器将如何处理字符串。更有效的方法是将其通过URL解析器并自己提取相关的语义。 我 认为 一个潜在的安全选项是确保路径以“xml/”开头,并且不包含“/…/”,但这仍然是一个糟糕的“解决方案”。 一个更好的选择是白名单:文件名只能包含[A-z0-9 \-]。用“xml”生成路径/$文件名.xml". 只要你不犯错误测试.xml". 更好的选择是只维护从名称到路径的映射,例如“data”映射到“xml”/data.xml,但“利用漏洞”没有映射,因此它返回一个错误。这意味着您不能轻松地添加文件,但也意味着用户不能指定任意路径。 编辑: 出现这种安全问题的原因是系统不同部分之间的意外交互(“文件系统上的所有文件都可以信任”)或错误的假设(“URL解析将在同一个‘目录’下给出一个URL”,“串联路径无法向上导航目录层次结构”,“所有文件名都是正常的”,“检查目录是否存在无法创建它”)。我举了一个例子,毫无疑问还有其他例子。 如果您需要使每个部署的配置不同,那么。。。使用配置!foo.swf 可以取config.xml,其中包含允许的路径列表。最好是有config.xml 给出从页面名称到XML路径的映射。
一般来说,公开实现细节,如“所有路径恰好匹配”
|
![]() |
2
2
我想你已经做得很好了! 这可能并不总是可能的,但你也可以 验证正在接收的数据结构 .
|