关于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认为看起来像标签的许多有效输入.
是我的输入阻止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认为看起来像标签的许多有效输入.