WEB开发网
开发学院数据库MSSQL Server 如何保证SQL Server免遭SQL注入攻击? 阅读

如何保证SQL Server免遭SQL注入攻击?

 2008-09-02 09:59:24 来源:WEB开发网   
核心提示: 这样会执行sel_CustomerData过程,然后运行truncate TABLE命令,如何保证SQL Server免遭SQL注入攻击?(2),删除Customer数据表的内容,如果有Foreign Key约束这个数据表,数据只要进入数据库,基本上不可能在数据库内进行验证,数据库将会返回

这样会执行sel_CustomerData过程,然后运行truncate TABLE命令,删除Customer数据表的内容。如果有Foreign Key约束这个数据表,数据库将会返回错误,向黑客提供受约束的数据表名称。一名聪明的黑客可以利用这个技巧,查找到数据库里面每一个表的名称。然后,黑客能够将数据插入你的数据库,或者从你的表中选择数据(取决于数据库给了应用程序什么样的权限)。当黑客获取了数据表中的数据,就可以使用xp_sendmail或sp_send_dbmail向他们自己发送电子邮件。即使你已经禁用这些过程,黑客可以轻易启用这些过程,或者使用sp_OA过程添加他们自己的过程。

如何确保SQL Server数据的安全,避免SQL注入?

有多种办法可以保护你的数据库,避免这样的攻击。

首先,我们需要采用数据库安全的最佳实践方法加固数据库安全。这包括将数据库的操作许可设置为最低级别(setting up the database security with the lowest set of permissions possible.)。同时,应用程序不要直接访问数据表。所有对数据表的访问应该通过存储过程进行,而且那些存储过程不应该包括任何动态SQL。

避免对表的直接访问,你可以很大地减少受攻击的层面。但是,这并不是唯一必须做的事情。存储过程也存在受到攻击的可能性。虽然对存储过程进行攻击需要花费更多的时间,但是,仍然有可能利用你的存储过程对数据库进行破坏。存储过程就是用来向数据库中插入、更新和删除数据。一个聪明的黑客可以利用你自己的存储过程攻击你。

这是需要应用开发人员和你共同工作的方面,以确保被执行的代码(the code being executed against the database)是安全的。如果不确保应用层的安全,防范SQL注入攻击,其他的工作都将是徒劳的。数据只要进入数据库,基本上不可能在数据库内进行验证。这需要在应用层对数据进行验证。

上一页  1 2 3 4  下一页

Tags:如何 保证 SQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接