嗨,谢谢阅读。
我使用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的DOC并找到了它:
第三个(可选)参数允许您关闭HTML的转义 该值,如果您需要结合使用此功能 即form_input()并避免两次转义。
太好了,我解决了我的转义问题。但是xss注入呢?这种做法似乎非常危险,如果我相信CodeIgniter的DOC(我使用警报脚本进行了快速测试并且安全性失败),我不明白为什么这是最好的方法。所以:
1)当我必须重新填写表格时,什么是确保安全并避免逃逸的最佳方法?
2)唯一看到恶意输入的人是编写该输入的人,但是对于我的Web应用程序来说仍然有害吗?
3)如果用发送的数据重新填充表单没有危险,为什么我们需要在set_value()中将转义参数设置为FALSE?为什么默认值未设置为FALSE?
编辑:我添加了最后两个问题
答案 0 :(得分:0)
CodeIgniter将在模型中包含任何内容时安全地防止SQL注入。当您只是在浏览器中显示结果时,不会出现注入风险,因为您所做的只是显示他们写回的内容。
但是,您对JavaScript或其他标记很了解。假设唯一可以进入输入框的人是其内容的作者,并且您在其他人查看它时逃避了输入结果,那么他们唯一可以产生一个警告框的人(或更糟糕的是)因为它们本身就是他们,当然他们可以在控制台中完成任何操作。
如果您仍然担心,可以随时在此字段上使用PHP的strip_tags()。