我正在尝试学习如何使用scriptProtect
,但是我想知道是否还需要做其他事情以尽可能保护我的应用程序。另外,scriptProtect是充当HTMLEditFormat还是完全独立的东西?
最后,我的应用程序位于另一个应用程序ex: example.com/myapp/index.cfm
下,我想必须在application.cfc
的主example.com
下添加scriptProtect正确吗?如果是这样,我是否应该在主应用程序中因该标签而导致错误?我应该编写一个扩展了application.cfc
的组件并在其中添加scriptProtect
吗?
最佳答案
亨利让您步入正轨。您绝对不能仅依靠scriptProtect
功能。但是我认为可以将其与其他验证方法结合使用。而且,就其价值而言,ColdFusion管理员中有一个全局设置,可为在该实例下运行的所有应用程序启用scriptProtect
。它在管理员中称为“启用全局脚本保护”,可以在“设置”菜单下找到。scriptProtect
设置与HTMLEditFormat
和EncodeForXXXX()
功能完全不同。我只是想指出scriptProtect
和/或“全局脚本保护”规则可以自定义。该设置通过将在服务器配置的cf_root/lib/neo-security.xml
文件或JEE配置的cf_root/WEB-INF/cfusion/lib/neo-security.xml
文件中定义的正则表达式应用于变量值来起作用。您可以通过修改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
,<embed
,<script
中查找包含<applet
或<meta
或FORM
或URL
或CGI
的字符串,和COOKIE
范围,并用<InvalidTag
替换它们。您可以增强该正则表达式以查找更多情况和/或根据需要更改替换字符串。见Protecting variables from cross-site scripting attacks section on this page