SQL 安全性: 新型 SQL 截断攻击和防御方法
2009-02-10 10:23:52 来源:WEB开发网Figure2Delimiting Strings with REPLACE
create procedure sys.sp_attach_single_file_db
@dbname sysname,
@physname nvarchar(260)
as
declare @execstring nvarchar (4000)
-- some code --
select @execstring = ‘CREATE DATABASE ‘
+ quotename( @dbname , ‘[‘)
+ ‘ ON (FILENAME =‘
+ ‘‘‘‘
+ REPLACE(@physname,N’’’’,N’’’’’’)
+ ‘‘‘‘
+ ‘ ) FOR ATTACH’
EXEC (@execstring)
-- some code --
GO
SQL 注入漏洞
接下来介绍存储过程,它可在验证了当前密码后更改用户帐户的密码(参见图 3)。
Figure3Changing a Password
CREATE PROCEDURE sp_setPassword
@username varchar(25),
@old varchar(25),
@new varchar(25)
AS
DECLARE @command varchar(100)
SET @command=
‘update Users set password=‘‘‘ + @new +
‘‘‘ where username=‘‘‘ + @username +
‘‘‘ AND password=‘‘‘ + @old + ‘‘‘‘
EXEC (@command)
GO
快速浏览存储过程,会发现没有任何参数对单引号进行转义,这同样容易受到 SQL 注入攻击。攻击者可以传递几个特定的参数,并将 SQL 语句修改为:
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接