安全攻防基础

安全—主要是数据

  1. 增删改查权限的控制,授权谁,哪个role能干哪些事这个要能控制。
  2. 谁什么时间做了什么,要有记录
  3. 密码加密。人家得到了也没用
    数据加密
  4. 存储密码 ,密码加了盐值,彩虹表就对不出来原始密码,存储时通常哈希和盐值一块存储或者分别存储。这样就能判断输入密码是否正确
    哈希函数的一个基本性质是单向性,即很难从哈希值反推出原始输入数据
  5. 强制用户设置强密码,定期修改密码。通过加密信道( HTTPS )来防止窃听。也可以给下发的凭证设置一个有效期来限制凭证暴露时间,以此来减少重放攻击
  6. 单点登录 (Single Sign On, SSO)
    允许用户使用一个单一的登陆凭证访问多个相关但独立的应用。
    微软账号登录微软的邮箱,office,teams就是单点登录;各大网站都用可以使用qq登录,也是
  7. 通过防火墙控制

在这里插入图片描述

一、安全是什么?就是三个基础原则

安全就是保护数据

1. 机密性

对未授权的主体不可见

开发人员不能拥有敏感数据的访问权限
密钥要复杂
显示器伤的数据被别有用心的人窥探

2. 完整性

没授权的人不可修改数据

3. 可用性

被授权的主体可读

二、如何解决安全问题

解决方案:先登录,再操作,最后留下记录
在这里插入图片描述
审计不仅是看日志,还有机器学习、异常检测的算法也能运用进来

三、How to make your password “invisible”?你懂加密嘛?

了解这些加密算法的概念和优缺点,就足够你选取合适的了

对称加密,一把钥匙

在这里插入图片描述
常见的对称加密算法
在这里插入图片描述
数据加密后,即使物理硬盘被盗,也不会导致信息外泄。
对称加密的密钥被盗就很麻烦。非对称密钥就解决了这个问题

非对称加密算法

在这里插入图片描述
除了加密功能,大部分非对称算法还提供签名功能。就是我用私钥加密,你用公钥解密,你就知道这段话是我说的。
在这里插入图片描述
在这里插入图片描述
大部分的认证和签名场景,其实使用的都是非对称加密算法。比如SSH,Git上传等,私钥留本地,公钥放服务端

散列算法

利用它可以对任意长度的输入,计算出一个定长的id。
其价值还体现在不可逆性。明文密码通过散列算法计算后,存储最终的散列值。后续登录过程中,计算出的散列值一样。登录成功
同样的消息生成同样的摘要;
不存在不同的输入,输出相同
在这里插入图片描述
使用散列算法的时候,记得加 盐(一串随机字符)。用户密码和盐拼接后,再进行散列计算。这样即使两个用户设置了相同的密码,也会有不同的散列值。此举还能对抗黑客
彩虹表通过预先计算和存储大量的密码及其对应的哈希值,在实际破解时通过查找表中的匹配项来减少计算时间。
黑客往往会提前计算一个彩虹表来提升暴力破解散列值的效率。
使用盐(salt)增加了破解难度。盐是一个随机值,与密码组合后再进行哈希,从而使彩虹表无效。

总结

对称加密具备较高的安全性和性能 (通常比非对称加密快,资源消耗低),要优先考虑; 首选 AES-CTR
一对多的场景(如多人登录服务器),存在密钥分发难题的时候,用非对称加密; ECC
不需要可逆计算的时候(如存储密码),使用散列算法。 SHA256 加盐

四、除了账号密码,对于身份认证还有什么选择?

在这里插入图片描述
强制用户设置强密码,定期修改密码。通过加密信道( HTTPS )来防止窃听。也可以给下发的凭证设置一个有效期来限制凭证暴露时间,以此来减少重放攻击

对于身份认证,单点登录是一种集大成的解决方案。基于CAS流程,衍生出了很多成熟的单点登录流程,可以供你使用

单点登录 (Single Sign On, SSO)

允许用户使用一个单一的登陆凭证访问多个相关但独立的应用。
微软账号登录微软的邮箱,office,teams就是单点登录;各大网站都用可以使用qq登录,也是
下面是几种典型的SSO 方式

CAS (Central Authentication Service, 集中式认证服务)

在这里插入图片描述

JWT (JSON Web Token)

它会在客户端保存一个凭证信息,之后你每一次登录的请求中都带上这个凭证

OAuth (Open Authorization) 授权

我们使用qq、微信登录其他应用所用的协议。
想要维持应用内的登录状态,应用还得颁发自己的登录凭证。这也就是为什么QQ授权后,应用还需要绑定你的手机号码

要求额外信息:为了增强安全性和提供更好的服务,MyApp 可能要求用户绑定手机号码。这样做有几个目的:
安全性:通过手机号码验证可以防止账号被盗,提供双重认证等安全功能。
联系用户:便于在需要时与用户联系,如密码重置、重要通知等。
应用特定功能:一些功能可能需要手机号码,例如社交功能、支付功能等。

当你在第三方应用中选择“通过微信登录”或“通过微博分享”,实际上就是通过OAuth授权。过程包括同意应用访问你的部分微信或微博信息。你被导向微信或微博进行登录,然后会被询问是否允许该应用访问你的某些数据(如头像、昵称、发布内容等)。一旦同意,应用就会收到一个访问令牌,它可以用这个令牌在限定范围内代表你执行操作,比如读取或写入数据,而无需获取你的密码。

OpenID (Open Identity Document) 认证

你会被重定向到你选择的OpenID提供商(如Google账号)进行登录,输入你的凭证后,提供商确认你的身份,并告知网站“这个人是该OpenID的合法拥有者”。之后,你可能就直接登录进了那个网站,无需再创建或记住新的用户名和密码。

你可能先通过类似OpenID Connect的方式认证身份,随后通过OAuth授权给第三方应用访问你的某些社交网络资料或功能。

五、数据保护方案:访问控制(就是授权,允许干什么)

通过身份认证,只能确认用户的身份,而对用户的操作和访问行为的把控,需要授权和审计
在这里插入图片描述

常见的访问控制机制:

DAC

你想从图书馆里借本书,管理员说:“你经过这本书的所有者同意了嘛?” 这个过程就是DAC
安全性完全取决于所有者的个人安全意识。
Linux中采用的就是DAC,用户可以控制自己的文件能被谁访问

role-BAC(role based Access Control, 基于角色的访问控制)

将主体划分为不同的role,对每个role的权限进行定义
当你想借书的时候,管理员问:“你是学生嘛?”。管理员来进行所有权限的分配和变更。
运维人员给开发、产品、运维划分不同的机器操作权限

rule-BAC(rule Based Access Control, 基于规则的访问控制)

当你借书的时候,管理员说:根据规定,持有阅览证就可以借书
针对请求本身制定的访问控制策略
典型的例子就是防火墙

MAC(Mandatory Access Control, 强制访问控制)

管理员说:初中生不能借阅高中生的书籍
MAC是安全性最高的访问控制策略,要求对所有数据进行标记来进行全面的把控。
MAC仅仅出现在政府系统中。

在实际工作中会对这4中访问控制机制组合使用。比如Linux中,我们除了对文件进行了DAC访问控制,也利用了role-BAC定义了 group的概念。这样,管理员可以把用户分配到不同的组中。DAC也会按照组去定义相应的权限了。

威胁评估

安全方案落地过程中,首先要考虑的是:目前存在哪些安全威胁
步骤:

1. 识别数据

数据被攻击后,会造成多大的损失

2. 识别攻击

什么样的数据有价值被攻击

3. 识别漏洞

它会怎么攻击?

在这里插入图片描述

六、XSS (Cross-Site Scripting, 跨站脚本攻击)

黑客在你的浏览器中,插入一段 Javascript 脚本,从而窃取你的隐私信息或者仿冒你进行操作

1. 反射型 XSS

点击链接,就会执行一段黑客定义的Javascript 脚本。所以不要点击任何未知的链接
它主要产生在前后端一体的网页应用中。

2. 基于 DOM 的 XSS

3. 持久型 XSS

总结

在这里插入图片描述

七、SQL注入:设置了强密码还是被别人登录

在这里插入图片描述

八、CSRF/SSRF

CSRF (Cross-Site Request Forgery,跨站请求伪造)

绕过身份验证,进行未授权的操作
我没有浏览银行网站,却突然发起了一笔转账
平常登录一个网站,一段时间不用再次登录。被黑客利用cookie,然后让你打开一个网页。背后执行代码

SSRF (Server Side Request Forgery,服务端请求伪造)

就是俗话说的内网穿透:由于大多数私有网络中的计算机都位于防火墙或路由器之后,它们通常无法直接从互联网接收数据。内网穿透技术可以使这些计算机看起来像是在公网上,从而实现从外网直接访问内网资源。
在这里插入图片描述

九、反序列化漏洞

序列化是将数据或对象转换为一种可以传输或者存储的格式的过程(比如转换成字节流,字符串)。
反序列化就是还原的过程

流程

  1. 黑客构造一个 调用链,并将其序列化成数据,然后发送给应用
  2. 应用接收到数据。大部分应用都有接收外部输入的地方,比如各种HTTP接口,而这个输入的数据就有可能是序列化数据
  3. 应用进行反序列化。收到数据后,将数据构造成对象
  4. 反序列化过程中,会调用黑客的调用链,使得应用会执行黑客的任意命令

防护方法

RASP适用于不是高并发的场景
在这里插入图片描述

十、信息泄漏

黑客根据错误信息”聚沙成塔“还原出整个代码原貌。
注释信息泄漏
通过.svn文件夹还原整套代码
员工私自公开代码到GitHub
白盒测试测试的源代码,黑盒测试的是软件的功能
在这里插入图片描述

十一、安全实操教程地址

模拟 XSS(跨站脚本攻击)攻击的网站实例通常是专门设计用于安全教育和培训的环境。这些环境提供了一个安全的、可控的地方来学习和测试各种安全漏洞,包括 XSS。以下是一些广泛使用的用于模拟 XSS 攻击的在线资源和平台:

1. OWASP WebGoat

OWASP WebGoat 是一个开源的、故意不安全的应用程序,用于安全培训和学习。它包含多种漏洞,包括 XSS。

  • 官网OWASP WebGoat
  • 特点:提供了详细的教程和演练,适合初学者和有经验的安全研究人员。

2. Google Gruyere

Google Gruyere 是一个小型的、不安全的 web 应用程序,用于演示和教育各种安全漏洞,包括 XSS。

  • 官网Google Gruyere
  • 特点:通过逐步教程教用户如何找到和利用漏洞。

3. Damn Vulnerable Web Application (DVWA)

DVWA 是一个非常不安全的 web 应用程序,提供了一个安全的环境来学习和测试各种 web 漏洞,包括 XSS。

  • 官网DVWA
  • 特点:包含低、中、高、和极高四个安全级别,帮助用户理解和防御不同复杂程度的攻击。

4. bWAPP (Buggy Web Application)

bWAPP 是一个具有多种漏洞的 web 应用程序,用于安全教育。它覆盖了 SQL 注入、XSS、CSRF 等多种漏洞。

  • 官网bWAPP
  • 特点:支持多种平台,提供了全面的漏洞练习环境。

5. Hack This Site

Hack This Site 是一个免费的在线平台,提供了多种挑战,包括 web 应用安全挑战,帮助用户学习和测试他们的黑客技能。

  • 官网Hack This Site
  • 特点:提供不同难度级别的挑战和社区支持。

实际使用示例

以下是如何使用其中一个平台进行 XSS 攻击练习的简要步骤:

在 DVWA 上模拟 XSS 攻击
  1. 下载并安装 DVWA:可以通过 GitHub 下载 DVWA 并在本地或虚拟机上设置。
  2. 设置安全级别:登录 DVWA 后,设置 XSS 挑战的安全级别为“低”。
  3. 查找 XSS 漏洞页面:导航到 XSS(Reflected)页面。
  4. 输入恶意脚本:在输入框中输入简单的 XSS payload,例如 <script>alert('XSS');</script>
  5. 执行攻击:提交表单,观察页面是否弹出警告框,确认 XSS 攻击是否成功。

重要提示

  • 合法性:务必在获得明确许可的环境中进行测试,切勿在未授权的真实网站上进行任何攻击。
  • 安全性:这些平台和工具应仅用于教育目的,不得用于恶意用途。

通过这些安全教育平台,你可以安全地模拟和学习 XSS 攻击的原理和防御方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值