接着下午的写:
第二条或许应该再补充一下,在mysql里,也有类似的执行动态语句的,就是PREPARE+execute,这个的使用和mssql里的sp_executesql功效相同,也能够带参数,防止动态sql语句注入。
在很多应用场景里面,用户最烦的就是分页的存储过程写法,所以,很多人就发明了通用的存储过程分页,可以通过site:cnblogs.com 通用存储过程分页 在gg里搜索,居然有32000条收录,先不说别的,看看排名前三位的的吧,
1 http://www.cnblogs.com/wengyuli/archive/2009/01/13/1375196.html
2 http://www.cnblogs.com/spring/archive/2005/09/02/228573.html
3 http://www.cnblogs.com/vagerent/archive/2007/10/17/927825.html
都是有注入漏洞的, 随便拿一个来试试注入,排名第一的,sql语句如下:
这个是转自邹健大哥的,邹健想必大家都认识,让我们来试一下他的通用存储过程:
exec sp_PageView 'article','articleid',1,10,'subject,articleid',' articleid desc;select 1 as ''ok''; ','', null
看看返回什么吧:
注入成功!
那这个到底怎么回事呢???
邹健大哥的通用存储过程都存在漏洞吗?
到底什么样的写法才不会被注入呢?太恐怖了