什么是 SQL?
SQL代表结构化查询语言,是一种用于操作RDBMS(关系数据库管理系统)的语言。所以它和C、Python等编程语言有点不同。
写一条 SQL 语句
在大学课程或 Proagte 中学习 SQL 的人希望使用 RDBMS 创建应用程序!我认为这将是当然我也是。但是,我认为在实际开发现场几乎没有直接写SQL语句的地方。当然,了解如何编写 SQL 语句很重要。下一章,我会告诉你直接写 SQL 会发生什么。
SQL注入
如果您是一名信息系学生或深入研究过 SQL 和 RDBMS 的人,您可能听说过它。 SQL 注入的常见示例包括:
select * from `users` where userid = ? and password = ?
将 ? 视为来自用户的输入。不管是哪种语言,假设这样的 SQL 语句是由 javascript、python 或 ruby 中的字符串连接创建的。该 SQL 语句的意思是,如果有用户的用户名和密码匹配,则返回用户信息。似乎可以通过在登录屏幕上执行此过程后创建诸如显示返回用户的逻辑来实现登录功能。然而,这有一个很大的陷阱。
如果上面的输入如下,SQL语句会发生什么:
用户 ID=岛田
密码 = '' 或 'a' = 'a'
假设有输入,会生成如下SQL语句。
select * from users where id = 'shimada' and password= '' or 'a' = 'a';
这个 SQL 可以称为恐惧的 SQL。将提取所有用户信息。上面解释的 SQL 示例是一个极端示例,但即使在您创建的应用程序中,也存在提取意外信息的风险。
甲骨文
您可以阅读上一章并编写SQL!我想用它!不知道想到它的人是不是犹豫了一下。在应用程序中操作RDBMS时,我们一般不会直接写SQL,而是使用一种叫做ORM(Object-Relational Mapping)的东西。这起到了连接Object和RDBMS的作用,但是大多数情况下还是有写SQL语句的方法。通过正确使用它,不会发生上述可怕的事情。不要仅仅因为你想学习和使用SQL,就直接写。
在最后
ORM不是唯一的防SQL注入措施,没关系,因为我用过ORM!这不是说。但是,如果您暂时要使用 RDBMS,除非您至少使用 ORM,否则您的安全性很可能会变得松散。请以本文为契机,重点关注应用程序安全措施。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308628095.html