CodeIgniter对POST值进行santizing

时间:2011-12-08 12:36:08

标签: codeigniter

我有一个文本区域,我正在尝试添加youtube嵌入代码和其他HTML标记。 $this->input->post正在将<iframe>代码分别转换为&lt;&gt;,而不是<h1><h2>代码。

知道如何存储这些值吗?

4 个答案:

答案 0 :(得分:1)

如果你只需要少量的表格来允许iframe,我会写一个函数来恢复iframe(同时验证它是一个有效的YouTube嵌入代码)。

您也可以在配置中关闭global_xss_filtering(如果您正在使用它,也不要实现它),但这不是理想的解决方案(关闭所有安全性以使一件事工作通常是一个可怕的想法)

$config['global_xss_filtering'] = FALSE;

要查看过滤掉的所有标记,请查看CI_Input类并搜索“$naughty”变量。您将看到以管道分隔的列表(不要更改此类中的任何内容)。

答案 1 :(得分:0)

为什么不避免CI自动清理并使用htmlspecialchars($_POST['var']);之类的内容?或者做一个辅助函数来消毒youtube网址......

答案 2 :(得分:0)

或者您可以直接询问视频ID代码或解析您所获得的代码。

这将允许您同时使用URL或嵌入代码。 同样只存储ID会占用数据库中较少的空间,您可以编写一个辅助函数来输出嵌入代码/ url。

答案 3 :(得分:0)

在这种情况下,使用$_POST代替$this->input->post来获取原始文本区域值,然后使用HTML Purifier清除内容而不会丢失<iframe>标记想。

您需要查看HTML Purifier文档以获取详细信息。请检查this specific documentation page about "Embedding YouTube Videos"