>如果我在CodeIgniter中使用Active Record Class函数,我的输入是否防止sql注入?
我读了某个地方,但我不明白怎么样?还是为什么?
> xssclean还以任何方式处理sql注入?
解决方法
is my input prevented against sql injection?
不完全“自动”,但它提供参数化查询. 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));
请注意,这与“输入”无关:当您使用字符串进行SQL查询时,必须使用参数化或转义才能使其适合,无论用户是否输入.这是一个简单正确的问题;安全是正确性的副作用.
类似地,当您将文本输出到HTML时,您需要HTML编码<&和“中的字符”,绝对没有什么用处理输入,以逃避或删除将来可能会麻烦的字符,如果你碰巧使用它们而不会在sql或HTML中转义,你会把你的输出在HTML中出现了意外的sql转义(这就是为什么在严重的应用程序中看到自倍增反斜杠)和sql中不必要的HTML转义,并且应该从除了直接用户输入之外的某个地方(例如,材料已经在数据库)你根本没有保护.
Also does xssclean deal with sql injection in any way?
不,它是针对HTML注入.但它比没有价值更糟糕.永远不要使用它
“XSS过滤”是完全虚伪的(CodeIgniter或其他人的).需要通过正确的HTML转义输出来防止XSS,而不是破坏输入.如果您的应用程序尚未安全,XSS过滤将无法充分保护您的安全;最好会混淆你现有的缺陷,给你一个错误的安全感.它还会扼杀许多CI认为标签的有效输入.
原文地址:https://www.jb51.cc/mssql/81397.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。