想问下 用了mssql存储过程 是不是就能防了所有 sql注入了

XUZIFENG 2009-07-16 04:49:06
想问下 用了mssql存储过程 是不是就能防了所有 sql注入了
不知,有没有谁有建设大型站的经历,来谈谈大站的方法啊.(网站改html静态除外)

1.老的方法,就是 在每页 上加一段代码,代码就是将每个 request 判断,看是否有恶意字符,如有就退出并提示,网上搜下, 防sql注入代码,有很多,就是这类的,但这类有缺点,就是 客户填的资料中一但含有接近的代码也出错,如你设为 and 为恶意,如你的客户注册 afdsaandfdsa,这用户名也不行了,好处是,方法简单,只要在 conn.asp 中加上就可了,基本就可防了.程序不用重写了.

2 ,就是过滤替换,将 恶意字全改成 全角字存进去,显示时再改回来
但缺点是,占系统资源,并程序要大面积改写

现在想用3 就是mssql存储过程 大家能否谈谈,用了 mssql存储过程 还要注意啥,有人说, 只要将 字符串中的 '改成 " 就可了,是吗,是否就万无一失了.
...全文
123 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
spkl1 2009-07-16
  • 打赏
  • 举报
回复
遍历get值和post值,用instr匹配,如果包含则response。end
XUZIFENG 2009-07-16
  • 打赏
  • 举报
回复
一般用存储过程的程序还不是一样要对提交的值进行注入判断? 能说下他们判断哪些字,如判断出来,还是要替换法吗.
spkl1 2009-07-16
  • 打赏
  • 举报
回复
看存储过程怎么写
一般用存储过程的程序还不是一样要对提交的值进行注入判断
XUZIFENG 2009-07-16
  • 打赏
  • 举报
回复
如程序已全写成 mssql 存储过程 并将字符串中 ' 已过滤成 "了,有人是否有攻击过或被攻击过的经历,或长期运行没有没成功攻击过的经历.
lzp4881 2009-07-16
  • 打赏
  • 举报
回复
存储过程也可注入, 只要是动态生成的,有注入口。
但是一般存储过程在获取参数时,有长度、类型限止,相对来说要安全一些
spkl1 2009-07-16
  • 打赏
  • 举报
回复
可以这么说,引用下别人的回答


在调用存储过程的时候,传入的参数在最后被执行的SQL语句中会被数据库服务器软件进行处理,这样就能防止所谓的“SQL注入”。

下面是个例子,比较了两种方法:

要执行的SQL语句:select * from Users where UserName = 'ABCDE'

一、使用字符串拼接产生的SQL语句
string sql = "select * from Users where UserName = '" + userName + "'";

二、存储过程
create procedure GetUserInfoByUserName
(
nvarchar(50) @UserName
)
AS

select * from Users where UserName = @UserName

一般情况下,用户只会在界面上输入符合规则的用户名,但是恶意攻击者可能会尝试输入类似下面这些经过精心准备的用户名:
"'; select * from master.dbo.sysdatabases; --"
"'; exec master.dbo.xp_cmdshell 'dir c:\ > c:\filelist.txt'; --"

如果用第一种方法,最后的SQL就会变成:
select * from Users where UserName = ''; select * from master.dbo.sysdatabases; --'
select * from Users where UserName = ''; exec master.dbo.xp_cmdshell 'dir c:\ > c:\filelist.txt'; --'
你仔细分析一下最后的执行结果。

而使用存储过程,这些字符串最后都会被当成字符串参数参与到最后的SQL查询中,数据库服务器把最后的SQL理解成:查询UserName字段的值为'; select * from master.dbo.sysdatabases; --的数据,不可能找得到。这样不论是攻击者输入什么参数都不会改变设计者编写的SQL语句的语义,也就防止了SQL注入。

使用存储过程不仅仅是能防止SQL注入(当然,在存储过程里面拼接字符串并使用sp_executesql来执行的不算),主要是存储过程是预编译的,对复杂的SQL语句,效率有很大程度上的提升,还可以进一步减少查询时客户端发送到服务端的数据包的大小。其他的好处还有很多,到Google上搜搜看。

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧