相关疑难解决方法(0)

围绕mysql_real_escape_string()的SQL注入

即使使用mysql_real_escape_string()函数,是否存在SQL注入的可能性?

考虑这个示例情况.SQL是用PHP构造的,如下所示:

$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));

$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
Run Code Online (Sandbox Code Playgroud)

我听过很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()函数也可以破解.但我想不出任何可能的漏洞?

像这样的经典注射:

aaa' OR 1=1 --
Run Code Online (Sandbox Code Playgroud)

不工作.

你知道任何可能通过上面的PHP代码注入的注入吗?

php mysql sql security sql-injection

596
推荐指数
4
解决办法
22万
查看次数

为什么要使用mysql_real_escape_string,不会addlashes阻止一切?

我正在查看文档并偶然发现mysql_real_escape_string(),我不明白为什么它只是在addslashes()时才有用.有人能告诉我一个有用的原因吗?

我也很好奇它为什么需要数据库连接....这似乎是很多开销.

php security

3
推荐指数
1
解决办法
749
查看次数

使用已使用filter_input()过滤的htmlspecialchars()从数据库输出数据

我从不同的博客中发现,强烈建议用它htmlspecialchars()来输出屏幕上的任何数据以免安全XSS Attack.

filter_input()用来过滤插入之前来自用户的任何数据database.filter_input()转换特殊字符,如''并保存它的方式,像

 I'm going to shopping with Molly's sister;Dolly
Run Code Online (Sandbox Code Playgroud)

我的问题是

How can I print(output) apostrope or quotes and specific special characters to users screen using htmlspecialchars so that the output would be user friendly

我试图使用htmlspecialchars($post,ENT_NOQUOTES);,但它给了我存储在数据库中的相同数据副本.如果我不使用htmlspecialchars(),只$post给我预期的结果,我认为很容易XSS Attack

感谢您的时间,并期待从同行那里获得帮助.

编辑

我有建议使用htmlspecialchars_decode()html_entity_decode()回答,但(/sf/users/93680471/͢ck)和其他一些建议不要使用这些functions来输出屏幕上的数据.

请注意我正在使用prepared statementparameterized query.但我不想保留任何安全漏洞,这就是为什么在发送到数据库之前过滤数据.

因为我曾经filter_input()在发送到数据库之前过滤数据,所以直接$post=$posted_data; …

php security xss mysqli htmlspecialchars

2
推荐指数
1
解决办法
1626
查看次数

替代PHP的mysql_real_escape_string

是否有替代PHP的mysql_real_escape_string.我想删除在文本框中输入的任何javascript或php代码.

javascript php sql-injection

-1
推荐指数
1
解决办法
5288
查看次数

标签 统计

php ×4

security ×3

sql-injection ×2

htmlspecialchars ×1

javascript ×1

mysql ×1

mysqli ×1

sql ×1

xss ×1