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