我正在尝试学习如何使用scriptProtect,但是我想知道是否还需要做其他事情以尽可能保护我的应用程序。另外,scriptProtect是充当HTMLEditFormat还是完全独立的东西?

最后,我的应用程序位于另一个应用程序ex: example.com/myapp/index.cfm下,我想必须在application.cfc的主example.com下添加scriptProtect正确吗?如果是这样,我是否应该在主应用程序中因该标签而导致错误?我应该编写一个扩展了application.cfc的组件并在其中添加scriptProtect吗?

最佳答案

亨利让您步入正轨。您绝对不能仅依靠scriptProtect功能。但是我认为可以将其与其他验证方法结合使用。而且,就其价值而言,ColdFusion管理员中有一个全局设置,可为在该实例下运行的所有应用程序启用scriptProtect。它在管理员中称为“启用全局脚本保护”,可以在“设置”菜单下找到。

scriptProtect设置与HTMLEditFormatEncodeForXXXX()功能完全不同。我只是想指出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='&lt;\s*(object|embed|script|applet|meta)'>
            <string>&lt;InvalidTag</string>
        </var>
    </struct>
</var>


这意味着,默认情况下,全局脚本保护机制仅在<object<embed<script中查找包含<applet<metaFORMURLCGI的字符串,和COOKIE范围,并用<InvalidTag替换它们。您可以增强该正则表达式以查找更多情况和/或根据需要更改替换字符串。

Protecting variables from cross-site scripting attacks section on this page

09-15 11:41