0

我正在浏览 Code Igniter 的文档,想知道我是否正确:

  • 每次都使用 $this->input->post(x,TRUE) 而不是 $_POST

  • 最好使用 PDO。如果没有,在查询之前执行 $this->security->xss_clean() 然后 $this->db->e​​scape() 。

  • 使用 bcrypt 而不是他们的加密系统

另外,要重新填充表单,我可以将 post(x,TRUE) 放在输入的 value="" 字段中,还是必须通过 prep_for_form() ?

他们真的应该写一份关于如何使用 CodeIgniter 处理数据的文档。

编辑:显然 CodeIgniter 的 ActiveRecords 已经逃脱了一切,所以不需要使用 db->e​​scape()...

EDIT2:显然 form_validation 也逃脱了。因此,在完成 form_validation 之后执行 htmlspecialchars 会进行双重转义......我已经在这里发布了这个问题:https ://github.com/EllisLab/CodeIgniter/issues/2230

4

1 回答 1

1

1) 是的,否则你可以在你的config.php文件中启用全局 XSS 过滤,这样使用输入法访问参数将始终被转义。

$this->db->escape()2) CodeIgniter 的 Query Builder 已经做了转义,如果你用驱动编写自己的 SQL 查询,你只需要使用这个函数(例如,$this->db->query("SELECT * FROM users WHERE id = '" . $this->db->escape($this->input->post('id')) . "' LIMIT 1");

3) 使用 Bcrypt。如果你有 PHP 5.3.7+,那么你可以使用这个库,它将提供与 PHP 5.5 中内置 Bcrypt 函数的前向兼容性。

于 2013-02-06T03:31:39.837 回答