我正在尝试学习如何使用scriptProtect
,但我想知道是否还需要做一些其他工作才能尽可能保护我的应用程序。另外,scriptProtect是作为HTMLEditFormat还是完全独立的东西?
最后我的应用程序在另一个应用程序ex: example.com/myapp/index.cfm
下我想我必须在application.cfc
example.com
的主要application.cfc
下添加scriptProtect吗?如果是这样,我是否应该从主应用程序中获得由此标记引起的错误?我应该编写一个扩展的组件吗scriptProtect
并在其中添加{{1}}吗?
答案 0 :(得分:6)
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