前言:
最近做的一个B/S项目,基本上就是前台网页+数据库就OK了,但是输入带有注释码的字符就可能篡改数据库!接下来为您举例!
正文:
1、比如我们要在给数据库插入一条数据:即,text_info表name中插入“Jackey”两个字符;
SQL的执行应该语句为:
insert into test_info(name) values('Jackey')
2、网页的输入框就应该输入:Jackey
如图所示:
不过一些熟悉数据库的里可以在输入框里这样写:小姜);drop table test_info--
如图所示:
这句话被执行到SQL里边是什么意思呢:
Insert into test_info(name) values(小姜);drop table test_info--)
也就是输入的字符巧妙的把代码分成了两句:一句是插入一个“小姜”的字段;另一句应该能让你哭一年,就是那这张表删掉。不用别人找,你自杀的心都有!
有问题肯定有解决方法:
问题:数据库写入字符造成代码注入!
解决:传入数据库的时候不直接传字符,而是用变量代替。
简单的写了一个插入的存储过程分享给大家吧:
ALTER PROCEDURE [dbo].[news_insert]
@title varchar(100),
@content text,
@caid int
AS
BEGIN
insert into news (title,[content],caId)
values(@title,@content,@caid)
END
总结:
软件的安全一部分是靠自己设计严密性,另一种是靠历代黑客前辈们发现的漏洞,我们再一一补洞!形成越来越晚上的安全体系,但并不是绝对安全,这也是我们为之努力的方向!