Codeigniter输入> post()删除html标签吗?

时间:2012-02-23 14:02:42

标签: php codeigniter

使用$ this-> input-> post();在Codeigniter中,删除网站用户可能输入的任何html和javascript,或者你必须使用htmlspecialchars();?

4 个答案:

答案 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过滤器无法捕获,则会暴露您的代码。

我通常不会在使用之前过滤我的原始输入数据,而只是在它即将被使用时以及以特定方式使用时。

如果您在输入中过滤恶意内容几乎是不可能的,因为它被设计为作为输出运行。

  • 当您打印到HTML文档时,请确保您的特殊字符是html编码的
  • 调用SQL时,请确保在没有SQL注入漏洞的情况下运行参数化查询
  • 当您进行系统调用时,请不要让他们控制您的系统。

正如我的回答评论中所提到的,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请求相同。