我正在阅读一篇关于Sql注入的文章,作者在文章中提到过,如果执行了sql注入攻击,攻击者可以通过端口80传输整个数据库我的问题是如何通过http端口传输数据库是有没有软件可以做到?如何通过劫持我的数据库来保护自己
http://msdn.microsoft.com/en-us/magazine/hh580736.aspx
通过端口80传输整个数据库
答案 0 :(得分:0)
SQL注入意味着您的代码存在缺陷 - 通常是您的Web代码,它解释了端口80 - 允许第三方在您的数据库上运行他们想要的任何SQL命令。如果你对此保持开放态度,那么就无法阻止他们做任何他们想做的事情。
避免它的方法取决于你编程的特定语言(Python,Ruby,Java等),但两个要点是你要正确地“清理你的输入 - 这是确保字符被正确转义所以例如,某人不能使用分号并造成严重破坏 - 并且参数化您的查询。这意味着当您编写SQL查询时,您使用参数进行用户定义的输入,然后安全地填充这些参数。在Perl中,您将使用:
$sth = $dbh->prepare("SELECT * FROM TABLE WHERE id = ?");
$sth->execute($id);
将它们视为占位符。
再次确切的方法取决于您选择的语言。
当你明白这一点时,你就在路上:http://xkcd.com/327/
答案 1 :(得分:0)
采取这些措施绝对毫无意义。
这只是一个漏洞允许的数十亿次可能攻击中的一个。因此,它就像在筛子上填充漏洞 - 一个辛苦而无用的工作,好像只留下一个漏洞 - 它将被使用。
而不仅仅是保护您的网站免受SQL注入。
答案 2 :(得分:-1)
我的猜测是,如果你可以注入某个地方,那么他们可以通过以下步骤来实现:
- 在SQL中备份数据库或将所有数据编写成文件
- 使用某些DBMS功能将该文件复制到Web服务器以便暴露给Internet,如SQL Server中的xp_cmdshell
- 通过您的网络服务器下载
醇>