Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 使用代码点火器的安全性和良好实践_Security_Codeigniter_Xss_Sql Injection - Fatal编程技术网

Security 使用代码点火器的安全性和良好实践

Security 使用代码点火器的安全性和良好实践,security,codeigniter,xss,sql-injection,Security,Codeigniter,Xss,Sql Injection,我正在浏览Code Igniter的文档,想知道我是否做到了这一点: 每次使用$this->input->post(x,TRUE)而不是$u post 最好使用PDO。如果没有,在查询之前先执行$this->security->xss_clean(),然后执行$this->db->escape() 使用bcrypt代替他们的加密系统 此外,要重新填充表单,我可以将post(x,TRUE)放在输入的value=”“字段中,还是必须通过prep_for_form()将其放入 他们应该编写一份关于

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

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

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

  • 使用bcrypt代替他们的加密系统

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

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

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

EDIT2:显然表单验证也会逃逸。因此,在完成表单验证后执行htmlspecialchars会进行双重转义。。。我在这里发布了这个问题:

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

2) CodeIgniter的查询生成器已经进行了转义,如果您正在使用驱动程序编写自己的SQL查询(例如,
$this->db->Query(“SELECT*FROM users WHERE id=”)”。$this->db->escape($this->input->post('id'))。“'LIMIT 1”);


3) 使用Bcrypt。如果您有PHP5.3.7+,那么您可以使用它,它将提供与PHP5.5中内置的Bcrypt函数的正向兼容性。

对于表单重新填充,请查看set_value()等帮助程序functions@gregory我使用细枝作为视图,因此没有设置_值().我认为xss_clean不应该被真正使用,因为它没有得到正确的实施;XSS是输出问题,应该通过过滤而不是输入sanatization来解决,这可能会导致一些问题,我只会在输出中使用htmlentities()necessary@Cyber-担保人给了我“在我的表单输入中,而不是用户键入的内容。这是重点,不是吗,如果用户决定关闭表单输入并插入其他html或其他html属性,该怎么办;我的意思是这就是htmlentities的目的。。。如果您需要允许某些特殊字符,函数可以满足这一要求,但不应允许用户输出或输入“除非您确切知道发生了什么,并意识到所有的含义,如果我正确理解XSS筛选!=逃逸。我想你可以写一些东西,它会输出粗体文本。至于图书馆。Ion_auth似乎也使用bcrpyt。git社区对它有很好的支持。XSS过滤不会逃逸,对吗。XSS过滤防止通过输入注入脚本,而转义则防止输入被解释为代码并在服务器上运行,就像在数据库中一样。