我同意 Ray 的观点,验证就是工作,而且是非常重要的工作。如果您可以有一个服务器范围的设置,那将是一种通用化以适应所有情况的方法。当您对特定字段进行自己的验证时,您可以真正缩小攻击面。例如,假设您有一个包含三个字段的表单;姓名、信用卡号、社会保险号。对于一个服务器范围的设置,它需要足够通用以允许所有三种类型的输入。通过您自己的验证,您可以对每个字段非常具体,并且只允许特定的字符集;name - 只允许字母字符和空格,信用卡号码 - 只允许数字,空格,破折号并且必须符合 mod 规则,社会安全号码 - 只允许 3-2-4 格式的数字和破折号。不允许其他任何事情。
话虽如此,我只想指出“全局脚本保护”规则可以自定义。该设置通过将cf_root/lib/neo-security.xml
在服务器配置中的文件或cf_root/WEB-INF/cfusion/lib/neo-security.xml
JEE 配置中的文件中定义的正则表达式应用于变量值来工作。CrossSiteScriptPatterns
您可以通过修改变量中的正则表达式来自定义 ColdFusion 替换的模式。
默认正则表达式定义为:
<var name='CrossSiteScriptPatterns'>
<struct type='coldfusion.server.ConfigMap'>
<var name='<\s*(object|embed|script|applet|meta)'>
<string><InvalidTag</string>
</var>
</struct>
</var>
这意味着,默认情况下,全局脚本保护机制仅查找包含<object
or<embed
或<script
or <applet
or的字符串<meta
并将其替换为<InvalidTag
. 如果需要,您可以增强该正则表达式以查找更多情况。
请参阅此页面上的保护变量免受跨站点脚本攻击部分