5

首先,我应该提醒您,我已经阅读了这篇文章以及关于我的问题的其他几篇文章,但大多数都几乎老了,而且大约是 3 年前。

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

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

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

4

2 回答 2

9

根据Docs类,input该类执行以下操作:

  • 过滤 GET/POST/COOKIE 数组键,只允许字母数字(和一些其他)字符。
  • 提供 XSS(Cross-site Scripting Hacks)过滤。这可以全局启用,也可以根据要求启用。
  • 和其他一些处理,但为了安全,这就足够了。

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

要启用XSS保护,请使用:

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

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

于 2015-10-29T16:14:19.253 回答
2

在接受任何数据到您的应用程序之前,无论是来自表单提交的 POST 数据、URI 数据,您都必须遵循以下步骤:

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

XSS 过滤

此过滤器查找常用技术以将恶意 JavaScript 嵌入到您的数据中

要通过 XSS 过滤器过滤数据,请使用以下xss_clean()方法:阅读更多

验证数据

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

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

修剪字段,在必要时检查长度并确保两个密码字段匹配。阅读更多

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

永远不要在不转义的情况下将信息插入数据库。

有关更多信息,请参阅查询构建器类https://www.codeigniter.com/userguide3/database/query_builder.html

更多信息

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

一切都取决于开发人员。框架只会提供构建应用程序的结构。如果您编写核心 php,您将更加安全。

更多链接:

如何在 PHP 中使用 bcrypt 对密码进行哈希处理?

PDO 准备好的语句是否足以防止 SQL 注入?

于 2015-10-29T16:38:05.757 回答