前言
网络世界, 没有所谓的安全, 任何系统都存在漏洞, 只要时间足够以及具备值得被攻破的价值. 就会被攻击. 攻与防之间,本来就没有绝对的安全。 我们能做的就是,尽量提高攻击的成本。 有时有些方案虽然有漏洞,但是实现起来足够简单,但是并不会过度影响业务性能(比如响应时间)。 所以,权衡安全性、开发成本、对系统性能的影响,选择比较折中、比较合理的方案更为重要。
|
1.XSS
什么是 XSS 攻击XSS 全称是 Cross Site Scripting,为了与“CSS”区分开来,故简称 XSS,翻译过来就是“跨站脚本”。 XSS 攻击是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览页面时利用注入的恶意脚本对用户实施攻击的一种手段。 最开始的时候,这种攻击是通过跨域来实现的,所以叫“跨域脚本”。 但是发展到现在,往 HTML 文件中注入恶意代码的方式越来越多了,所以是否跨域注入脚本已经不是唯一的注入手段了,但是 XSS 这个名字却一直保留至今。 当页面被注入了恶意 JavaScript 脚本时,浏览器无法区分这些脚本是被恶意注入的还是正常的页面内容,所以恶意注入 JavaScript 脚本也拥有所有的脚本权限。 下面我们就来看看,如果页面被注入了恶意 JavaScript 脚本,恶意脚本都能做哪些事情。 可以窃取 Cookie 信息。恶意 JavaScript 可以通过“document.cookie”获取 Cookie 信息,然后通过 XMLHttpRequest 或者 Fetch 加上 CORS 功能将数据发送给恶意服务器;恶意服务器拿到用户的 Cookie 信息之后,就可以在其他电脑上模拟用户的登录,然后进行转账等操作。 可以监听用户行为。恶意 JavaScript 可以使用“addEventListener”接口来监听键盘事件,比如可以获取用户输入的信用卡等信息,将其发送到恶意服务器。黑客掌握了这些信息之后,又可以做很多违法的事情。 可以通过修改 DOM 伪造假的登录窗口,用来欺骗用户输入用户名和密码等信息。 还可以在页面内生成浮窗广告,这些广告会严重地影响用户体验。除了以上几种情况外,恶意脚本还能做很多其他的事情,这里就不一一介绍了。总之,如果让页面插入了恶意脚本,那么就相当于把我们页面的隐私数据和行为完全暴露给黑客了。 恶意脚本是怎么注入的现在我们知道了页面中被注入恶意的 JavaScript 脚本是一件非常危险的事情,所以网站开发者会尽可能地避免页面中被注入恶意脚本。 要想避免站点被注入恶意脚本,就要知道有哪些常见的注入方式。通常情况下,主要有存储型 XSS 攻击、反射型 XSS 攻击和基于 DOM 的 XSS 攻击三种方式来注入恶意脚本。
如何阻止 XSS 攻击?我们知道存储型 XSS 攻击和反射型 XSS 攻击都是需要经过 Web 服务器来处理的, 因此可以认为这两种类型的漏洞是服务端的安全漏洞。 而基于 DOM 的 XSS 攻击全部都是在浏览器端完成的,因此基于 DOM 的 XSS 攻击是属于前端的安全漏洞 但无论是何种类型的 XSS 攻击,它们都有一个共同点,那就是首先往浏览器中注入恶意脚本,然后再通过恶意脚本将用户信息发送至黑客部署的恶意服务器上。 所以要阻止 XSS 攻击,我们可以通过阻止恶意 JavaScript 脚本的注入和恶意消息的发送来实现。 常用的阻止 XSS 攻击的策略。
更多信息参见: 参见 极客时间 - 浏览器工作原理与实践 - 浏览器安全[33 | 跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?-极客时间] 补充参考代码实现 PHP【Yii】
|
2.CSRF/XSRF
CSRF 保护 | 基础组件 | Laravel 5.8 中文文档 // 建议多阅读并实践几遍 表单方法伪造与跨站请求伪造(CSRF)攻击防护 | 路由&控制器篇 | Laravel 入门到精通教程 CSRF 保护 | 基础组件 | Laravel 6 中文文档
Note ↓
更多详情 例如:// 20200904 网易云音乐 直接在url的query string中添加csrf_token进行验证. 主要用于post方式的请求. |
3.SQL注入
4.代码注入
TBD |
5.DDoS攻击
拒绝服务攻击 -- 推荐阅读,国外的blog |
6.重放攻击
概念 ↓https://zh.wikipedia.org/wiki/重放攻击 https://baike.baidu.com/item/重放攻击/?fr=aladdin 简要定义 ↓重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的敌方进行。攻击者利用网络监听或者其他方式盗取认证凭据,之后再把它重新发给认证服务器。重放攻击在任何网络通过程中都可能发生,是计算机世界黑客常用的攻击方式之一。 引子13 | 实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?-极客时间 网友一
网友二
网友三[小白]
请继续技术调研 ... |
7. PHP安全与漏洞 --- 20210304 周四 家里
PHP安全与漏洞-免费在线视频教程-php中文网 // PHP安全与漏洞 整理实践TBD |
8.问题/补充
产品团队必须能够阻止,监视和警告HTTP请求中的常见攻击模式或技术(如果适用于您的服务):OWASP Top 10和其他应用程序安全漏洞(例如SSRF,SQLi,XSS,XXE,LFI,RCE,CSRF,业务逻辑漏洞等)。 蛮力攻击(例如,用户枚举,凭据填充,密码猜测)。 产品滥用或滥用(例如帐户接管,滥用业务逻辑缺陷)。-- SEEK RFC022 |
9.参考
常见web攻击总结 - morethink - 博客园 // 常见Web攻击总结 安全|常见的Web攻击手段之CSRF攻击 - 简书 // 安全|常见的Web攻击手段之CSRF攻击 前后端分离下如何防御CSRF攻击 - 简书 // 前后端分离下如何防御CSRF攻击 jQueue 动态设置form表单的action属性的值和方法 javascript的String到int(32位)的hash算法 负载均衡 接口鉴权 - API 文档 - 文档中心 - 腾讯云 PHP_SELF漏洞 - 简书 // PHP_SELF漏洞 https://blog.csdn.net/xuanyuan_fsx/article/details/104967382 // 程序猿应该知道的黑客技术大汇总 https://github.com/ningxiaofa/sectoolset // 搜集的Github关于安全工具集合 -- 20210308 https://github.com/ningxiaofa/learning_of_web_security // Web安全攻防 -- 20210308 |
后续补充
...