Code Igniter的安全性和良好实践

时间:2013-02-05 19:23:39

标签: security codeigniter xss sql-injection

我正在阅读Code Igniter的文档,想知道我是否做到了这一点:

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

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

  • 使用bcrypt代替其加密系统

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

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

编辑:显然CodeIgniter的ActiveRecords已经逃脱了所有内容,所以不需要使用db-> escape()......

EDIT2:显然form_validation也会逃脱。所以在完成form_validation之后做一个htmlspecialchars会双重逃避...我在这里发布了这个问题:https://github.com/EllisLab/CodeIgniter/issues/2230

1 个答案:

答案 0 :(得分:1)

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

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

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