赞
踩
随着互联网的高速发展,信息安全问题已经成为行业最为关注的焦点之一。今天我们就来说说一些常见的攻击方法以及相应的防御措施。希望看完本文大家能对前端安全有更深一层的了解。
SQL
注入漏洞(SQL Injection)是 Web 开发中最常见的一种安全漏洞。
它主要是利用前端表单提交,比如输入框、富文本框,输入sql
语句提交到后端,当后端服务通过提交的字段拼接成sql
语句进行数据库查询的时候,恶意sql
被执行,从而达到攻击的目的。
可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。
比如我们的登录,通过接收用户输入的用户名和密码进行sql
拼接然后去数据库查询。
# 接收username password
uname = request.POST['username']
passwd = request.POST['password']
# 存在 SQL 注入漏洞的 SQL 查询语句
sql = “SELECT id FROM users WHERE username=’” + uname + “’ AND password=’” + passwd + “’”
# 执行 SQL 语句
database.execute(sql)
我们正常输入肯定没问题,但是如果传入恶意sql
呢?
比如当我传入的密码是password' OR 1=1
,拼接的sql
语句如下
SELECT id FROM users WHERE username='username' AND password='password' OR 1=1'
由于 OR 1=1
语句,无论 username
和 password
是什么,WHERE
分句都将返回 users
表中第一个 id
。数据库中第一个用户的 id
通常是数据库管理员。通过这种方式,攻击者不仅绕过了身份认证,而且还获得了管理员权限。因此就达到了攻击的目的。
1.转义过滤用户的输入的某些 sql
关键字,如select、from、and、or
等。
2.使用ORM
框架如MyBatis
,减少sql
的手动拼接。
XSS
的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web
里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。
XSS
的本质是:恶意代码未经过滤,与网站正常的代码混在一起;浏览器无法分辨哪些脚本是可信的,导致恶意脚本被执行。
XSS
一般分为存储型、反射型和 DOM 型。
存储型:顾名思义,黑客将恶意 JavaScript
脚本长期保存在服务端数据库中,用户一旦访问相关页面数据,恶意脚本就会被执行。
存储型 XSS
的攻击步骤:
1.攻击者将恶意代码提交到目标网站的数据库中。
2.用户打开目标网站时,网站服务端将恶意代码从数据库取出,拼接在 HTML 中返回给浏览器。
3.用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
4.恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
这种攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。
反射型:顾名思义,恶意 JavaScript
脚本属于用户发送给网站请求中的一部分,随后网站又将这部分返回给用户,恶意脚本在页面中被执行。一般发生在前后端一体的应用中。
反射型 XSS
的攻击步骤:
1.攻击者构造出特殊的 URL,其中包含恶意代码。
2.用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
3.用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
4.恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
反射型 XSS
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。