微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL注入和代码

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

>如果我在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 举报,一经查实,本站将立刻删除。

相关推荐