0

我已经看到只需在浏览器的地址栏中键入某些 sql 行就可以进入网站的 sql 数据库。这怎么可能?地址栏不应该只将我们重定向到网站吗?那个地址栏怎么能接受sql语法?我对浏览器本身完全是外行,但地址栏提供漏洞让我着迷。

4

3 回答 3

4

这怎么可能?

应用程序正在执行从 URL 读取的任意 SQL。想想http://example.com/search.php?query=SELECT%20...

地址栏不应该只将我们重定向到网站吗?

这正是它正在做的事情。该漏洞存在于网站对该 URL 的处理中。

那个地址栏怎么能接受sql语法?

SQL 查询只是作为 URL 一部分的文本。地址栏不知道(或关心)您的 URL 包含 SQL。

于 2013-08-16T20:43:23.527 回答
1

你打算将这个问题的答案用于善意还是恶毒?

无论如何,假设您在表单中有一个 url

http://mysite.com/dosomething?email= $EMAIL

你有一些代码执行如下所示的查询:

SELECT fieldlist
FROM table
WHERE field = '$EMAIL';

然后这个页面解释了人们如何操纵 EMAIL 的内容来执行一个任意的查询:

于 2013-08-16T20:40:09.697 回答
1

SQL 注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中恶意 SQL 语句被插入到输入字段中执行(例如,将数据库内容转储给攻击者)。

例如,假设您有一个 textField 接收一个值,然后将该值分配给 variable username,然后您有一个statement接收 valor 的值,并将该值连接到表示您的查询的字符串,如下所示:

statement = "SELECT * FROM users WHERE name = '" + userName + "';"

假设您传递的值类似于' or '1'='1 此示例,此示例可用于强制选择有效的用户名,因为 '1'='1' 的评估始终为真。这只是一个例子!检查网站以了解更多信息

于 2013-08-16T20:53:06.373 回答