SQL注入和代码
有关Codeigniter及其输入处理能力的一些疑问.有些可能有点奇怪,但他们是无疑的怀疑.
>如果我在CodeIgniter中使用Active Record Class函数,我的输入是否防止SQL注入? 解决方法
不完全“自动”,但它提供参数化查询. CodeIgniter或否,您应该尽可能使用参数化查询优先查询字符串黑客. $bof= "a'b"; $zot= 'ab'; // 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)); 请注意,这与“输入”无关:当您使用字符串进行SQL查询时,必须使用参数化或转义才能使其适合,无论用户是否输入.这是一个简单正确的问题;安全是正确性的副作用. 类似地,当您将文本输出到HTML时,您需要HTML编码<&和“中的字符”,绝对没有什么用处理输入,以逃避或删除将来可能会麻烦的字符,如果你碰巧使用它们而不会在SQL或HTML中转义,你会把你的输出在HTML中出现了意外的SQL转义(这就是为什么在严重的应用程序中看到自倍增反斜杠)和SQL中不必要的HTML转义,并且应该从除了直接用户输入之外的某个地方(例如,材料已经在数据库)你根本没有保护.
不,它是针对HTML注入.但它比没有价值更糟糕.永远不要使用它 “XSS过滤”是完全虚伪的(CodeIgniter或其他人的).需要通过正确的HTML转义输出来防止XSS,而不是破坏输入.如果您的应用程序尚未安全,XSS过滤将无法充分保护您的安全;最好会混淆你现有的缺陷,给你一个错误的安全感.它还会扼杀许多CI认为标签的有效输入. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |