【发布时间】:2019-03-08 14:29:10
【问题描述】:
您好,感谢您的阅读。
我使用 PHP 7.0 开发 CodeIgniter 3,并通过 form_helper 使用表单。
首先,在我的控制器中使用 form_validation 库后,我在使用 set_value 函数重新填充表单时遇到了问题。我在 form_helper 中使用了 set_value,如下所示:
$my_input = array(
'name' => 'my_name',
'value' => set_value('my_name')
);
echo form_label('Title :');
echo form_textarea($my_input);
所以有一些像这样的文字:
she's the chief's lady
表格是这样重新填充的:
she's the chief's lady
这不是什么大问题,因为当我注册这些数据并填写一个字段时,在 HTML 中它会产生正确的句子。
但是如果表格中还有其他错误,那么句子将像这样注册:
she's the chief's lady
现在我的数据不正确了。
所以我阅读了 CodeIgniter 的文档并找到了这个:
第三个(可选)参数允许您关闭 HTML 转义 该值,以防您需要将此功能与 即 form_input() 并避免双重转义。
太好了,我解决了我的逃跑问题。但是 xss 注入呢?这种做法似乎很危险,我不明白为什么这是最好的方法,如果我相信 CodeIgniter 的 DOC(我使用警报脚本进行了快速测试,但安全失败)。所以:
1) 什么是保证安全的最佳方法,以及在我必须重新填充表单时避免逃逸??
2) 唯一看到恶意输入的人是编写它的人,但它对我的 Web 应用程序是否仍然危险???
3) 如果用发送的数据重新填充表单时没有危险,为什么我们需要在 set_value() 中将转义参数设置为 FALSE ?为什么默认值没有设置为 FALSE?
编辑:我添加了最后两个问题
【问题讨论】:
标签: php codeigniter-3 xss