-2

我正在阅读一篇关于 Sql injection 的文章,作者提到如果执行了 sql 注入攻击,攻击者可以通过端口 80 传输整个数据库我的问题是如何通过 http 端口传输数据库是否有任何软件去做吧 ?我如何保护自己免受劫持我的数据库

http://msdn.microsoft.com/en-us/magazine/hh580736.aspx

通过端口 80 传输整个数据库

4

3 回答 3

0

SQL 注入意味着您的代码存在弱点 - 通常是解释端口 80 的 Web 代码 - 允许第三方在您的数据库上运行他们想要的任何 SQL 命令。如果您对此持开放态度,那么您将无法阻止他们为所欲为。

避免这种情况的方法取决于您使用的特定语言(Python、Ruby、Java 等),但两个要点是您要正确“清理您的输入 - 即确保正确转义字符,以便有人可以”例如,不要输入分号并造成严重破坏 - 并参数化您的查询。这意味着当您编写 SQL 查询时,您将参数用于用户定义的输入,然后安全地填充这些参数。在 Perl 中,您将使用:

$sth = $dbh->prepare("SELECT * FROM TABLE WHERE id = ?");

$sth->execute($id);

将它们视为占位符。

同样,具体方法取决于您选择的语言。

当你明白这一点时,你就在路上:http: //xkcd.com/327/

于 2013-01-15T07:42:21.627 回答
0

采取这样的措施绝对没有意义。

这只是一个漏洞允许的数十亿次攻击中的一种。所以,这就像在筛子上填洞一样——这是一项繁琐且毫无用处的工作,就好像你只留下一个漏洞利用一样——它将被使用。

而不是仅仅保护您的站点免受 SQL 注入。

于 2013-01-15T07:42:40.510 回答
-1

我的猜测是,如果你在某个地方可以注入,那么他们可能可以通过以下步骤实现:

  1. 在 SQL 中备份数据库或将所有数据写入文件
  2. 使用一些 DBMS 函数将该文件复制到 Web 服务器,以便暴露给 Internet,例如 SQL Server 中的 xp_cmdshell
  3. 通过您的网络服务器下载它
于 2013-01-15T07:40:15.247 回答