如何清洁输入代码点火器3?

问题描述 投票:4回答:2

首先,我要提醒您,我已经阅读了this post和关于我的问题的其他几篇文章,但其中大多数几乎都已经老了,而且已经使用了大约3年。

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

这是我的网站要注册,并且我不知道正在注册哪种类型的用户,因此我不信任他们。我想在将所有输入插入到我不知道的input类不足以对其进行净化的数据库中之前对所有输入进行净化,这很危险。请告诉我codeigniter消毒功能!

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

php codeigniter security input input-sanitization
2个回答
7
投票

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

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

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

要启用XSS保护,请使用:

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

此外,您可能希望研究CSRF保护。但是,如果要进行ajax调用,启用它会有些棘手。


1
投票

在接受任何数据到您的应用程序之前,无论它是来自表单提交的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

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

切勿在不逃脱的情况下将信息插入数据库。

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

更多信息

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

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

更多链接:

How do you use bcrypt for hashing passwords in PHP?

Are PDO prepared statements sufficient to prevent SQL injection?

© www.soinside.com 2019 - 2024. All rights reserved.