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认为标签的有效输入.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...