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