什么是SQL注入?
可能重复:
XKCD sql注入 - 请解释
什么是SQL注入?
我看过“SQL注入”这个词,但仍然不明白。 它是什么?
SQL注入是有人在你的SQL查询中插入恶意代码的地方。
假设您有这样的SQL查询:
select * from people where name = '<name>' and password = '<password>'
现在让我们假设<name>
和<password>
被某人在您的网页上输入的内容替换。 如果有人输入这个作为他们的密码...
' or '' = '
...然后生成的查询将是:
select * from people where name = 'someone' and password = '' or '' = ''
......这显然不是你的意图。 你可以在这里读更多关于它的内容。
SQL注入是攻击者能够以某种方式操纵他们发送给你的数据的方式,这种方式愚弄你的程序将其中的一些作为SQL命令使用。
例如,你可以访问这里
当你建立一个SQL查询时,它通常包含各种位和片段,其中一些来自用户输入。 例如,如果您的应用中有“搜索簿”功能,则该书的名称是来自用户的字符串。
聪明的邪恶用户可以操纵他们发送给你的应用的输入,这样从这个输入建立的SQL查询将会是有害的。
所以,如果你像这样构建你的查询:
String q = "Select * from books where name='" + bookName + "'"
然后黑客可以搜索一本名为"x'; delete from books where name like '%"
的书"x'; delete from books where name like '%"
最终的结果是将执行以下查询: Select * from books where name='x'; delete from books where name like '%'
Select * from books where name='x'; delete from books where name like '%'
这将删除书桌的所有记录。 避免这种情况的标准方法是在构建包含用户提供的部分的查询时始终使用预准备语句。
链接地址: http://www.djcxy.com/p/93805.html