我在google上搜索了规范表示的含义,并发现了完全过于神秘的文档。任何人都可以快速解释规范表示,以及网站中规范表示攻击的典型漏洞是什么?
答案 0 :(得分:10)
规范化是您获取输入(例如文件名或字符串)并将其转换为标准表示的过程。
例如,如果您的Web应用程序仅允许访问C:\ websites \ mydomain下的文件,那么通常将任何引用文件名的输入规范化为物理直接路径,而不是使用相对路径的路径。如果要打开C:\ websites \ mydomain \ example \ example.txt,则该函数的一个输入可能是example \ example.txt。如果这超出了您的网站范围,那么很难解决,因此规范化功能将查看应用程序目录并将该相对路径更改为物理路径,C:\ websites \ mydomain \ example \ example.txt。这显然更容易检查,因为您只需在文件路径的开头进行字符串比较。
对于HTML输入,您可以获取%20之类的输入,并通过取消编码对其进行规范化,因此这将变为空格。这是一个好主意,因为不同编码方式的数量很多,规范化意味着您只会检查解码后的字符串,而不是试图涵盖所有编码变体。
基本上,您正在接受逻辑上等效的输入,并将它们转换为标准形式,然后您可以对其进行操作。
答案 1 :(得分:4)
以下说明来自“应用程序安全和开发STIG”here:
3.11规范表示 出现规范表示问题 当资源的名称用于 控制资源访问。有 多种表示方法 计算机系统上的资源名称。 仅依赖于应用程序的应用程序 用于控制访问的资源名称可以 错误地进行访问控制 决定是否指定了名称 一种无法识别的格式。
例如, 在Windows中,notepad.exe可能是 由以下文件表示 路径名称组合:
C:\ Windows \ System32下\ Notepad.exe的
%SYSTEMROOT%\ System32下\ Notepad.exe的
\ \ C:\ Windows \ System32下\ Notepad.exe的
\主机\ C $ \ Windows \ System32下\ Notepad.exe的
试图限制的应用程序 仅基于的访问权限 文件路径和名称可能不正确 授予或拒绝访问权限。同样的问题 可能适用于其他指定资源 一个系统,如硬和 软链接,URL,管道,共享, 目录,设备名称或数据内部 文件,如果是备用编码 机制与数据一起使用。
在 以下项目可能表明潜力 规范表示问题 申请:
•访问控制 基于资源名称的决定。
•未将资源名称减少到 它在使用前的规范形式。
在 为了尽量减少规范 代表问题 应用程序,实现以下内容 程序:
•不要完全依赖 用于控制访问的资源名称。
•如果 使用资源名称来控制 访问,验证名称以确保 它们的格式正确;拒绝 所有的名字都不符合已知的好处 标准。
•使用基于操作系统 访问控制机制,如 权限和ACL。
答案 2 :(得分:0)
规范化意味着将收到的数据减少到最简单的形式,它用于输入验证。
答案 3 :(得分:-5)
Canonical(我认为)意味着控制台输入是“典型行为”。非规范意味着输入是非标准的,需要特殊的知识,例如linux上“vi”的输入行为。