【问题标题】:What is SQL injection? [duplicate]什么是 SQL 注入? [复制]
【发布时间】:2011-01-14 00:55:54
【问题描述】:

可能的重复:
XKCD sql injection - please explain
What is SQL injection?

我见过“SQL 注入”这个词,但还是不明白。这是什么?

【问题讨论】:

标签: sql sql-injection


【解决方案1】:

SQL 注入是攻击者能够以一种欺骗您的程序将其中一些数据用作 SQL 命令的方式操纵他们发送给您的数据的地方。

例如,您可以访问here

【讨论】:

    【解决方案2】:

    当您构建 SQL 查询时,它通常包含各种位和片段,其中一些来自用户输入。例如,如果您的应用中有“搜索图书”功能,那么图书的名称就是来自用户的字符串。

    聪明、邪恶的用户可以操纵他们发送到您的应用程序的输入,从而使根据该输入构建的 SQL 查询是有害的。

    因此,如果您像这样构建查询:

    String q = "Select * from books where name='" + bookName + "'"
    

    然后黑客可以搜索一本名为"x'; delete from books where name like '%"的书

    最终结果将是执行以下查询: Select * from books where name='x'; delete from books where name like '%'

    这将删除 book 表的所有记录。避免这种情况的标准方法是在构建包含用户提供的片段的查询时始终使用准备好的语句。

    【讨论】:

    • 你的例子向我解释了sql注入的概念。谢谢
    【解决方案3】:

    SQL 注入是指有人将恶意内容插入您的 SQL 查询之一。

    假设您有这样的 SQL 查询:

    select * from people where name = '<name>' and password = '<password>'
    

    现在让我们假设&lt;name&gt;&lt;password&gt; 被某人在您的网页上键入的内容所取代。如果有人输入这个作为他们的密码...

    ' or '' = '
    

    ...那么结果查询将是:

    select * from people where name = 'someone' and password = '' or '' = ''
    

    ...这显然不是你的意图。你可以阅读更多关于它的信息here

    【讨论】:

    • 您的建议对我有很大帮助。非常感谢......
    猜你喜欢
    • 2021-08-20
    • 2011-06-08
    相关资源
    最近更新 更多