我已经看到只需在浏览器的地址栏中键入某些 sql 行就可以进入网站的 sql 数据库。这怎么可能?地址栏不应该只将我们重定向到网站吗?那个地址栏怎么能接受sql语法?我对浏览器本身完全是外行,但地址栏提供漏洞让我着迷。
3 回答
这怎么可能?
应用程序正在执行从 URL 读取的任意 SQL。想想http://example.com/search.php?query=SELECT%20...
。
地址栏不应该只将我们重定向到网站吗?
这正是它正在做的事情。该漏洞存在于网站对该 URL 的处理中。
那个地址栏怎么能接受sql语法?
SQL 查询只是作为 URL 一部分的文本。地址栏不知道(或关心)您的 URL 包含 SQL。
你打算将这个问题的答案用于善意还是恶毒?
无论如何,假设您在表单中有一个 url
http://mysite.com/dosomething?email= $EMAIL
你有一些代码执行如下所示的查询:
SELECT fieldlist
FROM table
WHERE field = '$EMAIL';
然后这个页面解释了人们如何操纵 EMAIL 的内容来执行一个任意的查询:
SQL 注入是一种代码注入技术,用于攻击数据驱动的应用程序,其中恶意 SQL 语句被插入到输入字段中执行(例如,将数据库内容转储给攻击者)。
例如,假设您有一个 textField 接收一个值,然后将该值分配给 variable username
,然后您有一个statement
接收 valor 的值,并将该值连接到表示您的查询的字符串,如下所示:
statement = "SELECT * FROM users WHERE name = '" + userName + "';"
假设您传递的值类似于' or '1'='1
此示例,此示例可用于强制选择有效的用户名,因为 '1'='1' 的评估始终为真。这只是一个例子!检查此网站以了解更多信息