使用$ this-> input-> post();在Codeigniter中,删除网站用户可能输入的任何html和javascript,或者你必须使用htmlspecialchars();?
答案 0 :(得分:8)
$this->input->post()
only contains post data.。
您可以随时按照手册调用$this->input->post(NULL, TRUE);
,以返回通过XSS过滤器过滤的数据。
你可以see here确切地发生了什么,它是否基本上使用fetch_from_array重建了$ _POST数组。这会调用security module for XSS $this->security->xss_clean($array[$index]);
(如果您将XSS过滤器设置为true)。
如果XSS过滤器无法捕获,则会暴露您的代码。
我通常不会在使用之前过滤我的原始输入数据,而只是在它即将被使用时以及以特定方式使用时。
如果您在输入中过滤恶意内容几乎是不可能的,因为它被设计为作为输出运行。
正如我的回答评论中所提到的,XSS输入过滤器不足以防止攻击。
如果有疑问,consult OWASP.
答案 1 :(得分:1)
CodeIgniter有一个安全级别,您可以随时使用它。您也可以随时随地添加htmlspecialchars()。
答案 2 :(得分:0)
post()
函数接受第二个参数,该参数通过XSS filter传递输入,该参数将清理所有html和javascript。
$this->input->post('some_data', TRUE);
答案 3 :(得分:-1)
全部都在docs。
返回所有POST项目的数组,不带任何参数。
要返回所有POST项目并通过XSS过滤器设置传递它们 将第二个参数设置为boolean时的第一个参数为NULL;
如果没有项目,该函数返回FALSE(布尔值) POST。
$this->input->post(NULL, TRUE); // returns all POST items with XSS filter $this->input->post(); // returns all POST items without XSS filter
与单个项目和GET请求相同。