最近学学 PHP 以前是写 ASP 的,看到参数接受过来直接用于查询或者插入数据库没做任何判断,就像了这样不是会被注入吗,测试了下没成功,然后网上 查了下 都说构造 注入语句,靠
select * from table where name='$name'
说 给 $name 赋值 'or 1=1#
select * from table where name='' or 1=1#'
后面就不执行了,大部分都是这样说的
我运行下 ' 会被直接编译成 \'出现在语句里
select * from table where name='\' or 1=1'结果还是提示没找到此用户
这样的话 一般写 程序应该注意什么地方?貌似什么都不判断 已经很安全了。
怎样写才会出现 注入漏洞?
select * from table where name='$name'
说 给 $name 赋值 'or 1=1#
select * from table where name='' or 1=1#'
后面就不执行了,大部分都是这样说的
我运行下 ' 会被直接编译成 \'出现在语句里
select * from table where name='\' or 1=1'结果还是提示没找到此用户
这样的话 一般写 程序应该注意什么地方?貌似什么都不判断 已经很安全了。
怎样写才会出现 注入漏洞?
在接收这个变量值的时候 如果输入 ' or 1=1 的话会被转义的 到时候 SQL 语句就成
select * from table where name='\' or 1=1'了
如下:
SELECT * FROM bugs WHERE reported_by = ?
SELECT * FROM example WHERE date > :placeholder
可以这样说吗?
mysql_escape_string会将“'”转换成“\'” 或者使用存储过程。