Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

给产品经理讲技术|Web安全之:SQL注入攻击

$
0
0

【文章摘要】不过我们只需要记住一个原则就行了,永远不要相信外界输入的数据。现在扫描SQL注入的工具也有很多,上线前,多用安全工具扫一扫,防范有疏漏。


给产品经理讲技术|Web安全之:SQL注入攻击

【相关推荐】

给产品经理讲技术|年入千万就指望它了,视频直播背后的技术

给产品经理讲技术|H5基础知识:表单

给产品经理讲技术|撩妹技术三部曲之“设计模式”

给产品经理讲技术丨没线,并不可怕?

给产品经理讲技术丨提需求的正确姿势是什么

不少朋友都会写SQL语句,如果你还不会写,可以看看果果以前写的文章「学学写点SQL语句,好吗?」,可是你造吗,SQL注入攻击是Web开发中最常见的一种安全问题,恶意攻击者可以利用它来获取数据库中的敏感信息、篡改数据,甚至可以获得系统的控制权限。产生SQL注入漏洞的原因也很简单,就是开发者没有对用户提交的内容进行过滤,导致了恶意SQL语句的执行。

我们来看个简单的栗子,假设有一个登录系统,用户在登录时提交用户名和密码,如果通过用户名和密码能从后台数据库中找到某个用户,那么就算登录成功了。可以写出这样的代码:

username = req.POST[‘username’] password = req.POST[‘password’]

sql = “SELECT * FROM user_table WHERE username='” + username + “‘ AND password='” + password + “‘”

可以看出,这个SQL语句是将查询语句和用户提交的数据拼接起来的,如果我提交的用户名是guoguo,密码是passwd123,那么这个SQL语句就是:

SELECT * FROM user_table WHERE username=’guoguo’ AND password=’passwd123′

这样看上去很正常对吧?可是,如果我是个坏人,提交的数据是这样的,用户名填的是guoguo’ ― ,密码是123,那么在后台得到的SQL语句就变成这样的了:

SELECT * FROM user_table WHERE username=’guoguo’ ‘ AND password=’123′

这里就有点蹊跷了哦,我们先看前面那个SQL语句,必须是账号密码两个条件匹配上了,才会返回guoguo这个用户的信息,否则查询不到任何结果。再看第二个SQL语句, 在SQL语句中是注释符号,它后面的语句都将被无视,那么这个语句翻译成白话就是“把用户名是guoguo的用户给我找出来”,看见没?这样完全不需要知道密码,就能拿到guoguo的用户信息,继而登录guoguo的账户。

这种通过在提交数据里面写入SQL代码,巧妙改变后台SQL执行逻辑的攻击方式,就是SQL注入攻击。

如何防范SQL注入攻击呢?其实也很简单,在这个栗子中,我们将用户输入的数据进行过滤,只允许使用字母和数字,那么这个攻击就起不到任何作用了。

当然了,你也可以写更复杂的过滤规则,不过我们只需要记住一个原则就行了,永远不要相信外界输入的数据。现在扫描SQL注入的工具也有很多,上线前,多用安全工具扫一扫,防范有疏漏喔~

欢迎添加微信公众号:给产品经理讲技术


给产品经理讲技术|Web安全之:SQL注入攻击

本文由产品壹佰为你推荐并呈现

文章来源:微信公众号:给产品经理讲技术(ID:pm_teacher)

文章作者:果果

友情提示:

若出处标注错误,请联系QQ:2977686517及时更正,感谢理解和支持!

少年关注我们的官方微博@产品100和微信订阅号:chanpin100ghsd,有惊喜哦!


给产品经理讲技术|Web安全之:SQL注入攻击

Viewing all articles
Browse latest Browse all 12749

Latest Images

Trending Articles





Latest Images