如何清理输入 codeigniter 3?

how sanitize input codeigniter 3?

首先,我要提醒您,我已经阅读了 this post 和其他一些关于我的问题的帖子,但大多数都已经过时了,而且是大约 3 年前的。

现在我正在使用 CodeIgniter 3,我想知道什么是我在插入数据库之前从用户那里检索的数据的最佳清理过滤器。

这是为了我的网站注册,我不知道注册的是哪种用户,我不能相信他们。这可能很危险 我想在将所有输入插入数据库之前对其进行清理 我不知道 input class 是否足以清理它?
请告诉我 codeigniter 消毒功能!

我已经阅读了 codeigniter 文档中的安全性 class,但我想确定一下。

根据 Docsinput class,执行以下操作:

  • 过滤 GET/POST/COOKIE 数组键,只允许字母数字(和其他一些)字符。
  • 提供 XSS(跨站脚本攻击)过滤。这可以全局启用,也可以根据要求启用。
  • 还有一些其他的处理,但是为了安全,这就够了。

因此,这解决了 SQL 注入和 XSS 问题。对于大多数用法,这就足够了。

要启用 XSS 保护,请使用:

$val = $this->input->post('some_data', TRUE); // last param enables XSS protection.

此外,您可能需要研究 CSRF 保护。但是,如果您正在进行 ajax 调用,则启用它有点棘手。

在您的应用程序接受任何数据之前,无论是 POST 来自表单提交的数据,URI 数据,您必须按照以下步骤操作:

  1. 过滤数据。
  2. 验证数据以确保它符合正确的类型、长度、大小等(有时这一步可以代替 第一步)
  3. 在将数据提交到数据库之前转义数据。 CodeIgniter 提供了以下函数来协助这个过程:

XSS 过滤

此过滤器查找常用技术来嵌入恶意软件 JavaScript进入你的数据

要通过 XSS 过滤器过滤数据,请使用 xss_clean() 方法:Read More

验证数据

CodeIgniter 有一个表单验证库,可以帮助您验证、过滤和准备数据

$this->form_validation->set_rules('username', 'Username','trim|required|min_length[5]|max_length[12]');

修剪字段,必要时检查长度并确保两个密码字段匹配。 Read more

在数据库插入前转义所有数据

切勿在未转义的情况下将信息插入数据库。

有关详细信息,请参阅查询生成器 class https://www.codeigniter.com/userguide3/database/query_builder.html

更多信息

Codeigniter 不会使您的应用程序安全 看到这个 https://security.stackexchange.com/questions/97845/how-secure-is-codeigniter-3-x

一切真的取决于 developer.frameworks 只会提供一个结构来构建你的 applications.You 如果你写核心 php 会更安全 php.

更多链接:

How do you use bcrypt for hashing passwords in PHP?

Are PDO prepared statements sufficient to prevent SQL injection?