Php 编码点火器';s XSS保护正在删除<;脚本>;来自用户输入的标记。。。但我不知道';我不想这样!
CodeIgniter非常出色,但我正在使用它开发一个网站,用户需要能够共享他们的网站代码。不幸的是,CodeIgniter通过从我的用户输入到数据库中的Php 编码点火器';s XSS保护正在删除<;脚本>;来自用户输入的标记。。。但我不知道';我不想这样!,php,codeigniter,xss,script-tag,Php,Codeigniter,Xss,Script Tag,CodeIgniter非常出色,但我正在使用它开发一个网站,用户需要能够共享他们的网站代码。不幸的是,CodeIgniter通过从我的用户输入到数据库中的标记来做“正确”的事情,因此当它返回数据时,如下所示: [已删除]用户数据[已删除] 但是,我需要我的站点显示脚本标记,但显然不能解析它们。我如何让CodeIgniter或PHP返回标记,但仍然为数据库清理它们并在不执行它们的情况下返回它们 谢谢 杰克 编辑:顺便说一句,它不是一个选项来使用像Markdown这样的东西,所有东西都必须输出以复制
标记来做“正确”的事情,因此当它返回数据时,如下所示:
[已删除]用户数据[已删除]
但是,我需要我的站点显示脚本标记,但显然不能解析它们。我如何让CodeIgniter或PHP返回
标记,但仍然为数据库清理它们并在不执行它们的情况下返回它们
谢谢
杰克
编辑:顺便说一句,它不是一个选项来使用像Markdown这样的东西,所有东西都必须输出以复制可复制的代码,这些代码可以在其他地方无需修改就可以工作我猜您的config.php文件中将XSS保护设置为global将其更改为下面的内容
/*
|--------------------------------------------------------------------------
| Global XSS Filtering
|--------------------------------------------------------------------------
|
| Determines whether the XSS filter is always active when GET, POST or
| COOKIE data is encountered
|
*/
$config['global_xss_filtering'] = FALSE;
我猜你在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;
所以,您希望显示脚本标记,但不希望它们由浏览器渲染 如果是这样,那么我将使用一个简单的
htmlspecialchars()
函数来解析代码,并将所有
标记转换为脚本
我相信CodeIgniter中有一个相当的函数是来自表单帮助程序的form_prep()
,但我不知道它在表单元素之外的行为。因此htmlspecialchars()
函数应该满足您的要求
我同意上面Tom的观点,如果您不希望表单元素在保存前去掉script
标记,那么您需要禁用全局XSS过滤。那么,您希望显示脚本标记,但不希望浏览器呈现它们
如果是这样,那么我将使用一个简单的htmlspecialchars()
函数来解析代码,并将所有
标记转换为脚本
我相信CodeIgniter中有一个相当的函数是来自表单帮助程序的form_prep()
,但我不知道它在表单元素之外的行为。因此htmlspecialchars()
函数应该满足您的要求
我同意上面Tom的观点,如果您不希望表单元素在保存前去掉script
标记,那么您需要禁用全局XSS过滤