当前位置:  开发笔记 > 前端 > 正文

SQL注入和Codeigniter

如何解决《SQL注入和Codeigniter》经验,为你挑选了1个好方法。

关于Codeigniter及其输入处理功能的一些疑问.有些可能有点奇怪,但他们怀疑是无中生有.

    如果我在CodeIgniter中使用Active Record Class函数,我的输入是否可以防止SQL注入?

    我在某个地方看到了它,但我不明白它是怎么回事?或为什么?

    xssclean也以任何方式处理SQL注入吗?

bobince.. 16

是我的输入阻止SQL注入?

不完全'自动',但它确实提供参数化查询.CodeIgniter或否,您应该优先使用参数化查询,尽可能使用查询字符串黑客.

$bof= "a'b";
$zot= 'a\b';

// Insecure! Don't do this!
//
$this->db->query("SELECT foo FROM bar WHERE bof='$bof' AND zot='$zot'"); 

// Secure but annoying to write
//
$this->db->query("SELECT foo FROM bar WHERE bof='".$this->db->escape($bof)."' AND zot='".$this->db->escape($zot)."'"); 

// This is what you want
//
$this->db->query('SELECT foo FROM bar WHERE bof=? AND zot=?', array($bof, $zot)); 

请注意,这与'input'无关:当您从字符串进行SQL查询时,您必须使用参数化或转义以使它们适合,无论它们是否是用户输入.这是一个简单的正确性问题; 安全性是这种正确性的副作用.

同样,当你输出文本转换成HTML,你需要HTML编码<,&并且"在它的字符,然后.如果您碰巧使用它们而不在SQL或HTML中转义,那么试图摆脱输入以逃避或删除将来可能会很麻烦的字符绝对没有用.您将通过在HTML中进行意外的SQL转义(这就是为什么您在编写糟糕的应用程序中看到自我倍增的反斜杠)和SQL中不需要的HTML转义来破坏您的输出.如果您从除了直接用户输入之外的某个地方(例如,数据库中已有的材料)中取出文本,您根本不受保护.

xssclean也以任何方式处理SQL注入吗?

不,它的目标是HTML注入.但它比无价值更糟糕.永远不要使用它.

"XSS过滤"完全是假的(再次,CodeIgniter或其他任何人).需要通过正确的HTML转义输出来防止XSS,而不是修改输入.如果您的应用程序尚未安全,XSS过滤将无法充分保护您; 充其量它会混淆你现有的缺陷并给你一种虚假的安全感.它还会破坏CI认为看起来像标签的许多有效输入.



1> bobince..:

是我的输入阻止SQL注入?

不完全'自动',但它确实提供参数化查询.CodeIgniter或否,您应该优先使用参数化查询,尽可能使用查询字符串黑客.

$bof= "a'b";
$zot= 'a\b';

// Insecure! Don't do this!
//
$this->db->query("SELECT foo FROM bar WHERE bof='$bof' AND zot='$zot'"); 

// Secure but annoying to write
//
$this->db->query("SELECT foo FROM bar WHERE bof='".$this->db->escape($bof)."' AND zot='".$this->db->escape($zot)."'"); 

// This is what you want
//
$this->db->query('SELECT foo FROM bar WHERE bof=? AND zot=?', array($bof, $zot)); 

请注意,这与'input'无关:当您从字符串进行SQL查询时,您必须使用参数化或转义以使它们适合,无论它们是否是用户输入.这是一个简单的正确性问题; 安全性是这种正确性的副作用.

同样,当你输出文本转换成HTML,你需要HTML编码<,&并且"在它的字符,然后.如果您碰巧使用它们而不在SQL或HTML中转义,那么试图摆脱输入以逃避或删除将来可能会很麻烦的字符绝对没有用.您将通过在HTML中进行意外的SQL转义(这就是为什么您在编写糟糕的应用程序中看到自我倍增的反斜杠)和SQL中不需要的HTML转义来破坏您的输出.如果您从除了直接用户输入之外的某个地方(例如,数据库中已有的材料)中取出文本,您根本不受保护.

xssclean也以任何方式处理SQL注入吗?

不,它的目标是HTML注入.但它比无价值更糟糕.永远不要使用它.

"XSS过滤"完全是假的(再次,CodeIgniter或其他任何人).需要通过正确的HTML转义输出来防止XSS,而不是修改输入.如果您的应用程序尚未安全,XSS过滤将无法充分保护您; 充其量它会混淆你现有的缺陷并给你一种虚假的安全感.它还会破坏CI认为看起来像标签的许多有效输入.


要解释为什么CI的xssclean毫无价值?我很好奇!这是我使用CI的一半原因.我想知道我是在欺骗自己而不是安全!
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有