【问题标题】:CodeIgniter's XSS Protection is removing <script> tags from user inputs... but I don't want it to!CodeIgniter 的 XSS 保护正在从用户输入中删除 <script> 标记......但我不希望它这样做!
【发布时间】:2010-11-22 23:24:13
【问题描述】:

CodeIgniter 非常棒,但我正在使用它来开发一个网站,用户需要在该网站上分享他们的网站代码。不幸的是,CodeIgniter 一直在做“正确”的事情,从我的用户输入到数据库中删除 &lt;script&gt; 标签,所以当它返回的数据看起来像这样:

[已删除] 用户数据 [已删除]

但是,我需要我的网站来显示脚本标签,但显然不需要解析它们。如何让 CodeIgniter 或 PHP 返回 &lt;script&gt; 标签,但仍为数据库清理它们并在不执行它们的情况下返回它们?

谢谢!

杰克

编辑:顺便说一句,使用 Markdown 之类的东西不是一个选项,所有内容都必须输出到可复制粘贴的代码,无需在其他地方修改即可工作

【问题讨论】:

    标签: php codeigniter xss script-tag


    【解决方案1】:

    那么,您希望显示脚本标签,但又不希望它们被浏览器呈现?

    如果是这样,那么我会使用一个简单的htmlspecialchars() 函数来解析代码并将所有&amp;lt;script&amp;gt; 标签转换为&amp;lt;script&amp;gt;

    我相信 CodeIgniter 中的一个有点等价的函数是来自 Form helper 的form_prep(),但它在表单元素之外的行为我不知道。所以htmlspecialchars() 函数应该满足你的要求。

    我同意上述 Tom 的观点,如果您不希望表单元素在保存之前被剥离 script 标签,则需要禁用全局 XSS 过滤。

    【讨论】:

      【解决方案2】:

      我猜你在 config.php 文件中将 XSS 保护设置为全局,将其更改为我下面的内容

      /*
      |--------------------------------------------------------------------------
      | Global XSS Filtering
      |--------------------------------------------------------------------------
      |
      | Determines whether the XSS filter is always active when GET, POST or
      | COOKIE data is encountered
      |
      */
      $config['global_xss_filtering'] = FALSE;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-01
        • 1970-01-01
        • 2021-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多