如何消毒输入codeigniter 3?

时间:2015-10-29 16:05:30

标签: php codeigniter security input input-sanitization

首先,我应该提醒您,我已经阅读了this post以及其他一些关于我的问题的帖子,但最重要的是它们已经差不多了,大约3年前。

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

这是我的网站注册,而且我不知道注册的是哪种用户,我不能信任他们。在将数据插入数据库之前我想清理所有输入可能会很危险我不知道input课程是否足以消毒它? 请告诉我codeigniter消毒功能!

我已经在codeigniter文档中读过安全类,但我想确定。

2 个答案:

答案 0 :(得分:7)

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

  • 过滤GET / POST / COOKIE数组键,仅允许使用字母数字(和其他一些)字符。
  • 提供XSS(跨站点脚本黑客)过滤。这可以在全球范围内启用,也可以根据要求启用。
  • 和其他一些处理,但为了安全起见,这已经足够了。

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

要启用XSS保护,请使用:

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

此外,您可能希望了解CSRF保护。但是,如果您正在进行ajax调用,那么启用它会有点棘手。

偏见:尝试在真正的框架中启动新项目,例如Zend,Laravel等,默认情况下,您可以更好地控制过滤和安全性。

答案 1 :(得分:1)

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

  1. 过滤数据。
  2. 验证数据以确保其符合正确的类型,长度,大小等(有时此步骤可以替换 第一步)
  3. 在将数据提交到数据库之前转义数据。 CodeIgniter提供以下功能来协助此过程:
  4. 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

    在插入数据库之前撤消所有数据

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

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

    更多信息

    Codeigniter不会使您的应用程序出现问题请参阅此https://security.stackexchange.com/questions/97845/how-secure-is-codeigniter-3-x

    一切都取决于developer.frameworks只提供构建应用程序的结构。如果你编写核心php,你会更安全。

    更多链接:

    How do you use bcrypt for hashing passwords in PHP?

    Are PDO prepared statements sufficient to prevent SQL injection?