2012-09-27 57 views
0

有一个网站是用CI版本1.7.2编写的。mysql注入和跨站点脚本 - CodeIgniter

任务是防止注入攻击和跨站点脚本。

我几乎读了与它相关的各种信息。我试图

-htmlentities

-mysql_real_escape_string

-CI xss_clean

-pregmatch, escape, htmlspecialchars

-CI escape

-strip_tags

-magic_quotes

在搜索框中,如果我输入警报代码或writeResponse,它会显示各种从网站和数据库的结果。(有的没有在Chrome中工作,但警报,一切都在Firefox的其他工作和IE)

请建议什么是解决这个问题的最佳方法。

谢谢你

+3

发布您的代码。 – Mansfield

回答

1

如果你还没有听说过它。 PDO是用于PHP和SQL的首选技术之一。该文件称,SQL注入是几乎是不可能的,如果你使用的是PDO的“准备语句”它看起来像这样:

<?php 
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); 

// insert one row 
$name = 'one'; 
$value = 1; 
$stmt->execute(); 

// insert another row with different values 
$name = 'two'; 
$value = 2; 
$stmt->execute(); 
?> 

本示例代码需要来自:http://php.net/manual/en/pdo.prepared-statements.php 从该链接,阅读第二个项目符号点。

它具有充当抽象的额外好处,使您的系统跨数据库兼容。代码也看起来更好。

浏览文档,看看它是否提供了你正在寻找的东西。

1

见的URL下

SQL injection and XSS protection in PHP combining Code Ignitors xss_clean() and Zend PDO

目前已经通过的CodeIgniter为您提供的情况下2种的安全功能。

  1. XSS过滤为用户输入:Input Class有其方法第二个布尔参数,它可以让你通过XSS过滤器的情况下运行,输入您不必对全球XSS过滤器。

  2. 对于SQL注入,使用绑定查询和活动记录是安全的,因为框架完成了逃离易受攻击用户输入的所有工作,所以它可以帮助您避免SQL注入。很少有漏洞,有活动记录,由用户报告,他们却迅速固定在suqsequent释放由CodeIgnitor队(EllisLabs)

另一个例子

Prevent SQL injections in codeigniter

http://codeigniter.com/forums/viewthread/124587/#616863

http://codeigniter.com/forums/viewthread/186543/#881859