【问题标题】:get incomplete POST data after form submit表单提交后获取不完整的 POST 数据
【发布时间】:2012-05-25 11:33:40
【问题描述】:

我已经研究这个问题几个小时了。 我有一个带有文本区域的表格。我使用 nicEdit 文本编辑器。它替换了 textarea 并显示了一个不错的文本编辑器,因为我希望我的用户为他们的内容添加一些样式。

我使用 codeIgniter (PHP),并使用 form_helper 创建表单。我也使用 form_validation 进行 ss-validation 和 jquery 验证进行 cs-validation

当我单击提交时,表单提交似乎很好。我这样说是因为我使用 fiddler(一个 http 记录器),并且我看到我的文本被文本编辑器包裹着正确的 html 标签。

但是当我在视图中获取@_pots 数据时,不知何故,部分标签已被删除。

fiddler 如何跟踪 HTTP 调用和提交的表单数据(似乎正确)

Hello SO, <br><br>
<span style="font-weight: bold;">the following line should be bold</span><br><br>
<span style="font-style: italic;">the following line should be italic</span><br><br>
<span style="text-decoration: underline;">the following line should be underlined</span><br>

我的 html 在我的视图和我的@_post 数据的 print_r 结果中的外观

Hello SO,<br><br>
<span bold;"="">the following line should be bold</span><br><br>
<span italic;"="">the following line should be italic</span><br><br>
<span underline;"="">the following line should be underlined</span><br>

看起来不知何故,当我取回我的数据时,它会删除 style="font-weight

$_post 对特殊字符有什么作用吗?!?!有人遇到过类似的问题吗? 非常感谢所有回复。

【问题讨论】:

  • 您是否有任何可能影响内容的验证规则(通过 jQuery 验证的客户端或通过 CodeIgniter 的 form_validation 库的服务器端)?如果没有看到更多代码,几乎不可能肯定地说。
  • 是的,我有一些验证规则……但出于测试目的,我关闭了规则……但仍然遇到同样的问题。我一直在进一步测试,我有一些更新。请稍候
  • 另外,确保安全类没有对 html 做任何奇怪的事情(以防止 xss)。 codeigniter.com/user_guide/libraries/security.html
  • 就像@mazzzzz 说的那样.. 但更具体地说,您是否在配置中使用它。:$config['global_xss_filtering'] = TRUE; ? ...或者(手动)这个:$this-&gt;input-&gt;post('yourInputName', TRUE) ?如果是这样,请尝试其中一种,看看你得到了什么:在你的配置中:$config['global_xss_filtering'] = FALSE;,或者,$this-&gt;input-&gt;post('yourInputName', FALSE)
  • 我想我找到了问题的原因...例如,在 Chrome 中,它在 标签中包含粗体...仅在 Firefox 中它会将它们包装在一些有点愚蠢的 我发现萤火虫在代码中添加了这一行: _moz_dirty="" 这可能会导致问题?!?!抱歉让您久等了,我的互联网连接中断了一个小时。

标签: codeigniter special-characters nicedit


【解决方案1】:

您需要从 Codeigniter 扩展 CI_Security 类并注释/删除/修改此行:

/*
if(in_array($_SERVER['REQUEST_URI'],$allowed))
        {
            $evil_attributes = array('on\w*', 'xmlns');
        }
        else
        {
            $evil_attributes = array('on\w*', 'style', 'xmlns');
        }
*/

【讨论】:

  • 我通过CI传递样式属性,没问题,而且我没有像这样扩展CI_Security类。
  • @csotelo 您的解决方案解决了我的问题。在我的 codeIgniter 版本中,我从数组中删除了名为 _remove_evil_attributes() 的函数。我现在有安全风险吗?你能解释一下为什么 codeigniter 会禁止样式属性吗?
  • 我认为问题出在配置文件中:$config['global_xss_filtering'] = TRUE;可能存在安全风险,所以我提到你可以根据需要评论/删除/修改库的扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多