Php xss筛选不删除codeigniter中的单引号
我使用codeigniter已经有一段时间了,我刚刚在我的脚本中发现了sql注入的可能性 当用户输入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”附近的语法不正
<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代码
你需要保护自己不受伤害