我有一个难题,我应该怎么mysql_real_escape_string()
我的变量,而无需将它们插入到\n, \r, \x00
当有人对我的评论字段使用" '
或<br>
,我preg_replace
,而不是试图mysql_real_escape_string
的数据库,但似乎我不知道到底如何让我想要的所有字符和符号。SQL注入mysql_real_escape_string
0
A
回答
2
你应该能够使用str_replace函数,以帮助这一点:
mysql_real_escape_string(str_replace(array("\n", "\r\n", "\x00", '"', '\''), '', $input));
话虽如此,为数据库读/写切换到mysqli或PDO是一个好主意。这两个都允许准备好的语句,这可以降低SQL注入的风险。
这里的PDO的例子:
$stmt = $PDOConnection->prepare('INSERT INTO example_table (input_field) VALUES (:input_field)');
$stmt->bindParam(':input_field', $input);
$stmt->execute();
3
mysql_real_escape_string
只能转义值以便您的查询不会中断,如果正确使用它也可以防止SQL注入。
如果你不想要某些字符,你需要使用附加功能去除之前你申请mysql_real_escape_string
。
[插入强制 “使用准备语句” 的评论]
例:
$string = "My name is
John";
$filtered_string = str_replace("\n", " ", $string); // filter
$escaped = mysql_real_escape_string($filtered_string); // sql escape
mysql_query("INSERT INTO `messages` SET `message` = '" . $escaped . "'");
+0
“[插入强制性”使用准备好的语句“注释”) –
相关问题
- 1. mysql_real_escape_string足以支持反SQL注入吗?
- 2. 使用mysql_real_escape_string和stripslashes避免SQL注入
- 3. PHP的mysql_real_escape_string和MySQL注入
- 4. 防止SQL注入:mysql_real_escape_string()真的是我需要的吗?
- 5. mysql_real_escape_string可以防止各种sql注入吗?
- 6. 为什么mysql_real_escape_string()不应该避免任何SQL注入?
- 7. preg_replace&mysql_real_escape_string问题清除SQL
- 8. 如何mysql_real_escape_string SQL查询?
- 9. mysql_real_escape_string替代SQL服务器
- 10. SQL注入插入
- 11. 做htmlspecialchars和mysql_real_escape_string保持我的PHP代码安全注入?
- 12. SQL注入
- 13. Hibernate SQL注入
- 14. TableAdapters SQL注入
- 15. SQL Server注入
- 16. EJB3 SQL注入
- 17. Rails SQL注入?
- 18. SQL注入vulnerablities
- 19. php sql注入
- 20. SQLAlchemy + SQL注入
- 21. SQL注入bwapp
- 22. SQL注入法
- 23. JPA SQL注入
- 24. PHP - SQL注入
- 25. SQL注入
- 26. DocumentDB Sql注入?
- 27. SQL注入2.0
- 28. DVWA sql注入
- 29. Sql注入group_concat
- 30. 盲SQL注入
咦?你想做什么? – SLaks