sql注入总是无孔不入(ps:' or 1=1#),该如何安全的过滤好呢(我用的php和mysql_connect)?
select * from users where name = @name
参数化查询(Parameterized Query 或 Parameterized Statement)是访问数据库时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值。
在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有指令,也不会被数据库运行。Access、SQL Server、MySQL、SQLite等常用数据库都支持参数化查询。
5 回答3.3k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
可以使用
mysql_real_escape_string()
对字符串进行转义,然后再放进 SQL。这里有官方介绍:http://www.php.net/manual/zh/function.mysql-real-escape-string.php
个人建议还是使用一个WEB框架,常见的WEB框架都有完善的防注入机制。
例如:
简单、快速入门的:CodeIgniter
功能更全面的:Yii (这个官网有时会被墙)