Php xss筛选不删除codeigniter中的单引号

Php xss筛选不删除codeigniter中的单引号,php,sql-server,codeigniter,xss,sql-injection,Php,Sql Server,Codeigniter,Xss,Sql Injection,我使用codeigniter已经有一段时间了,我刚刚在我的脚本中发现了sql注入的可能性 当用户输入 <script>alert('hi') </script> 警报('hi') 在我的输入字段$this->security->xss_clean($field)中删除scipts,但它不处理字符串的单引号。 因此,我得到的查询错误为 错误号码:37000 [Microsoft][ODBC SQL Server驱动程序][SQL Server]在“hi”附近的语法不正

我使用codeigniter已经有一段时间了,我刚刚在我的脚本中发现了sql注入的可能性

当用户输入

<script>alert('hi') </script> 
警报('hi')
在我的输入字段
$this->security->xss_clean($field)
中删除scipts,但它不处理字符串的单引号。 因此,我得到的查询错误为

错误号码:37000

[Microsoft][ODBC SQL Server驱动程序][SQL Server]在“hi”附近的语法不正确

从帐户中选择*字段1='[removed]警报('hi')[removed]”和字段2='asdasd'

文件名:D:\htdocs\system\database\DB\u driver.php

行号:331

这适用于典型的xss字符串,但当用户添加
1'或'1'='1

未生成任何错误,查询已成功运行

我知道这可以通过
str_replace(“'”,“,$field)”解决

如何使用codeigniter解决此问题

是否有任何全局筛选器解决此问题,例如(
$config['global_xss_filtering']=TRUE;
),这样我就不必在所有输入函数中添加str_replace


是否有任何方法可以在每次使用xss筛选清理数据时生成日志?

xss\u clean对于SQL查询来说根本不是一个好函数!XSS和SQL注入是两个独立的域。从您的描述来看,这是一个类似的函数,对于SQL注入之前的保护来说,这是完全无用的函数

必须使用escape*函数或查询参数绑定来清理SQL查询。我不使用codeigniter,但这些概念是通用的。用str_替换的解决方案也不是真正的好方法

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick')); // All three values should be escaped properly

xss_clean根本不是用于SQL查询的好函数!XSS和SQL注入是两个独立的域。从您的描述来看,这是一个类似的函数,对于SQL注入之前的保护来说,这是完全无用的函数

必须使用escape*函数或查询参数绑定来清理SQL查询。我不使用codeigniter,但这些概念是通用的。用str_替换的解决方案也不是真正的好方法

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick')); // All three values should be escaped properly

xss_clean根本不是用于SQL查询的好函数!XSS和SQL注入是两个独立的域。从您的描述来看,这是一个类似的函数,对于SQL注入之前的保护来说,这是完全无用的函数

必须使用escape*函数或查询参数绑定来清理SQL查询。我不使用codeigniter,但这些概念是通用的。用str_替换的解决方案也不是真正的好方法

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick')); // All three values should be escaped properly

xss_clean根本不是用于SQL查询的好函数!XSS和SQL注入是两个独立的域。从您的描述来看,这是一个类似的函数,对于SQL注入之前的保护来说,这是完全无用的函数

必须使用escape*函数或查询参数绑定来清理SQL查询。我不使用codeigniter,但这些概念是通用的。用str_替换的解决方案也不是真正的好方法

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?"; 
$this->db->query($sql, array(3, 'live', 'Rick')); // All three values should be escaped properly

您可以通过调用
xss\u clean
来防止SQL注入
xss_clean
将保护您免受xss注入的影响,但不会阻止sql注入。让我向你详细介绍一下:

SQL注入:恶意用户输入,试图在服务器端攻击您的数据库。用户输入将包含SQL代码

XSS注入:恶意用户输入,它试图为其他用户进行黑客攻击(大多数情况下是间谍攻击)。用户输入将包含Javascript代码

你需要保护自己不受这两方面的影响,但你应该理解其中的区别

请阅读codeigniter中的SQL注入预防。您也可以使用准备好的语句,或。关于针对XSS的保护,您可以使用
XSS_clean
,甚至可以用普通PHP编写简单的代码:

public static function protectArrayAgainstXSS(&$arr) {
    foreach ($arr as $index => $a) {
        if (is_array($a)) {
            App::protectArrayAgainstXSS($arr[$index]);
        } else if ($a !== null) {
            $arr[$index] = strip_tags($a);
        }
    }
}

您可以通过调用
xss\u clean
来防止SQL注入
xss_clean
将保护您免受xss注入的影响,但不会阻止sql注入。让我向你详细介绍一下:

SQL注入:恶意用户输入,试图在服务器端攻击您的数据库。用户输入将包含SQL代码

XSS注入:恶意用户输入,它试图为其他用户进行黑客攻击(大多数情况下是间谍攻击)。用户输入将包含Javascript代码

你需要保护自己不受这两方面的影响,但你应该理解其中的区别

请阅读codeigniter中的SQL注入预防。您也可以使用准备好的语句,或。关于针对XSS的保护,您可以使用
XSS_clean
,甚至可以用普通PHP编写简单的代码:

public static function protectArrayAgainstXSS(&$arr) {
    foreach ($arr as $index => $a) {
        if (is_array($a)) {
            App::protectArrayAgainstXSS($arr[$index]);
        } else if ($a !== null) {
            $arr[$index] = strip_tags($a);
        }
    }
}

您可以通过调用
xss\u clean
来防止SQL注入
xss_clean
将保护您免受xss注入的影响,但不会阻止sql注入。让我向你详细介绍一下:

SQL注入:恶意用户输入,试图在服务器端攻击您的数据库。用户输入将包含SQL代码

XSS注入:恶意用户输入,它试图为其他用户进行黑客攻击(大多数情况下是间谍攻击)。用户输入将包含Javascript代码

你需要保护自己不受这两方面的影响,但你应该理解其中的区别

请阅读codeigniter中的SQL注入预防。您也可以使用准备好的语句,或。关于针对XSS的保护,您可以使用
XSS_clean
,甚至可以用普通PHP编写简单的代码:

public static function protectArrayAgainstXSS(&$arr) {
    foreach ($arr as $index => $a) {
        if (is_array($a)) {
            App::protectArrayAgainstXSS($arr[$index]);
        } else if ($a !== null) {
            $arr[$index] = strip_tags($a);
        }
    }
}

您可以通过调用
xss\u clean
来防止SQL注入
xss_clean
将保护您免受xss注入的影响,但不会阻止sql注入。让我向你详细介绍一下:

SQL注入:恶意用户输入,试图在服务器端攻击您的数据库。用户输入将包含SQL代码

XSS注入:恶意用户输入,它试图为其他用户进行黑客攻击(大多数情况下是间谍攻击)。用户输入将包含Javascript代码

你需要保护自己不受伤害