文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
文章收录在网站:http://hardyfish.top/
网络五层模型分别负责什么?
物理层:
- 负责把两台计算机连起来,然后在计算机之间通过高低电频来传送
0,1
这样的电信号
- 比如通过一些电缆线传输比特流。
链路层:
- 链路层涉及到的协议比较多,比如 Mac 地址啊,ARP 等
- 这一层主要就是负责数据的通信,使各节点之间可以通信
- 比如通过 MAC 地址唯一识别不同的节点,通过以太网协议定义数据包等。
网络层:
- 网络层负责把一个数据从一个网络传递到另外一个网络,最大的功能就是进行路由决策
- 比如通过 IP,子网等概念,使数据更好着在不同的局域网中传递。
传输层:
- 传输层的功能就是建立端口到端口的通信,刚才说的网络层的功能则是建立主机到主机的通信
- 比如通过网络层我们可以把信息从 A 主机传递到 B 主机,但是 B 主机有多个程序
- 我们具体要发给哪个程序,则是靠传输层的协议来识别,常见协议有 UDP 和 TCP。
应用层:
虽然收到了传输层传来的数据,可是这些传过来的数据五花八门,有html格式的,有mp4格式的,
需要指定这些数据的格式规则,收到后才好解读渲染。
- 例如我们最常见的
Http
数据包中,就会指定该数据包是 什么格式的文件了。
DNS 的解析过程?
DNS用于将域名解析为IP地址的系统。
DNS解析过程主要包括以下步骤:
用户在浏览器中输入一个域名
浏览器首先会在本地缓存中查找是否有该域名对应的IP地址
- 如果有则直接返回IP地址,否则进入下一步。
浏览器会向本地DNS服务器发送一个查询请求。
本地DNS服务器如果缓存中有该域名对应的IP地址
- 则直接返回IP地址给浏览器,否则进入下一步。
本地DNS服务器会向根域名服务器发送一个查询请求
- 询问该域名的顶级域名服务器(比如
.com
)的IP地址。根域名服务器会返回顶级域名服务器的IP地址给本地DNS服务器。
本地DNS服务器再次向顶级域名服务器发送查询请求
- 询问该域名的权威域名服务器(比如
example.com
)的IP地址。权威域名服务器返回该域名的IP地址给本地DNS服务器。
本地DNS服务器最后将IP地址返回给浏览器。
浏览器得到IP地址后,就可以向该IP地址对应的服务器发送HTTP请求,建立起与服务器的连接,开始浏览网页。
这个过程涉及到多个级别的DNS服务器:
- 从根域名服务器到顶级域名服务器再到权威域名服务器,最终找到域名对应的IP地址。
这个过程是递归查询的过程,每一级的DNS服务器负责下一级DNS服务器的查询,直到找到IP地址。
- 这样就实现了将域名解析为IP地址的功能。
什么是DDOS攻击?
DDoS 攻击是指 利用多个不同的计算机或网络设备,协同发起大规模的拒绝服务攻击。
攻击者通过控制大量的僵尸计算机或利用其他合法的网络设备,向目标服务器或网络发起大量的请求
- 使其无法正常响应合法用户的请求。
DDoS攻击的目标是使目标服务器或网络过载,耗尽其计算资源、网络带宽、处理能力等
- 导致正常用户无法访问目标服务。
攻击方式多种多样,常见的类型包括:
ICMP Flood:
- 发送大量的ICMP(Internet Control Message Protocol)数据包,消耗目标服务器的网络带宽和处理能力。
SYN Flood:
- 发送大量的TCP连接请求的半连接(SYN),使服务器处于半连接打开状态,无法接受新的连接请求。
UDP Flood:
- 发送大量的UDP(User Datagram Protocol)数据包,使服务器的目标端口过载,无法处理其他合法的请求。
HTTP Flood:
- 发送大量的HTTP请求,以耗尽目标服务器的处理能力,例如发起大量的查询或下载请求。
DNS Amplification:
- 利用存在放大效应的DNS协议,向开放式DNS服务器发送小型请求,从而获得大量响应数据
- 使目标服务器的网络带宽被占用。
DDoS攻击可以导致服务不可用、网络延迟、数据泄漏以及经济损失,对于网站、在线服务和网络基础设施造成严重影响。
为了应对DDoS攻击,可以采取一系列的防御措施,如使用入侵检测和防火墙技术、流量过滤、负载均衡等
- 以提高网络的安全性和抗DDoS攻击能力。
什么是SQL 注入?举个例子?
SQL 注入就是通过把 SQL 命令插入到 Web表单提交或输入域名或页面请求的查询字符串
- 最终达到欺骗服务器执行恶意的SQL命令的。
SQL注入攻击的总体思路:
- 寻找到SQL注入的位置
- 判断服务器类型和后台数据库类型
- 针对不通的服务器和数据库特点进行SQL注入攻击
SQL注入攻击实例:
- 比如,在一个登录界面,要求输入用户名和密码
- 但是我们可以通过SQL注入来实现免帐号登录,比如我们可以这样输入:
用户名: ‘or 1 = 1 --
密 码:
用户一旦点击登录,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了。
这是为什么呢?
下面我们分析一下:从理论上说,后台认证程序中会通过如下的SQL语句来判断用户的账户密码是否正确:
String sql = “select * from user_table where username=’ “+userName+” ’ and password=’ “+password+” ‘”;
因此,当输入了上面的用户名和密码,上面的SQL语句变成:
SELECT * FROM user_table WHERE username=’’or 1 = 1 –- and password=’’
分析上述SQL语句我们知道,
username='' or 1=1
这个语句一定会成功;然后后面加两个-
谈一谈 XSS 攻击,举个例子?
XSS是一种经常出现在web应用中的计算机安全漏洞,与SQL注入一起成为web中最主流的攻击方式。
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点
进而添加一些脚本代码嵌入到web页面中去
使别的用户访问都会执行相应的嵌入代码,从而盗取用户资料
- 利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。
XSS攻击的危害
盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
盗窃企业重要的具有商业价值的资料
非法转账
强制发送电子邮件
网站挂马
控制受害者机器向其它网站发起攻击
原因解析
主要原因:
- 过于信任客户端提交的数据!
解决办法:
- 不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。
进一步分析细节:
- 客户端提交的数据本来就是应用所需要的,但是恶意攻击者利用网站对客户端提交数据的信任
- 在数据中插入一些符号以及
javascript
代码- 那么这些数据将会成为应用代码中的一部分了,那么攻击者就可以肆无忌惮地展开攻击啦
- 因此我们绝不可以信任任何客户端提交的数据!!!
XSS 攻击分类
反射性XSS攻击 (非持久性XSS攻击):
- 漏洞产生的原因是攻击者注入的数据反映在响应中。
- 一个典型的非持久性XSS攻击包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击),例如,正常发送消息:
http://www.test.com/message.php?send=Hello,World!
接收者将会接收信息并显示Hello,World;但是,非正常发送消息:
http://www.test.com/message.php?send=<script>alert(‘foolish!’)</script>!
接收者接收消息显示的时候将会弹出警告窗口!
持久性XSS攻击 (留言板场景):
- XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。
- 也就是说,每当用户使用浏览器打开指定页面时,脚本便执行。
与非持久性XSS攻击相比,持久性XSS攻击危害性更大。
从名字就可以了解到,持久性XSS攻击就是将攻击代码存入数据库中,然后客户端打开时就执行这些攻击代码。
例如,留言板表单中的表单域:
<input type="text" name="content" value="这里是用户填写的数据">
正常操作流程是:用户是提交相应留言信息 —— 将数据存储到数据库 —— 其他用户访问留言板,应用去数据并显示
而非正常操作流程是攻击者在value填写:
<script>alert(‘foolish!’);</script> <!--或者html其他标签(破坏样式。。。)、一段攻击型代码-->
并将数据提交、存储到数据库中;当其他用户取出数据显示的时候,将会执行这些攻击性代码。
修复漏洞方针:
- 漏洞产生的根本原因是 太相信用户提交的数据,对用户所提交的数据过滤不足所导致的
- 因此解决方案也应该从这个方面入手,具体方案包括:
将重要的cookie标记为http only, 这样的话Javascript 中的
document.cookie
语句就不能获取到cookie了
- 如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击
表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合
对数据进行Html Encode 处理
过滤或移除特殊的Html标签,例如:
<script>, <iframe> , < for <, > for>, " for
过滤JavaScript 事件的标签,例如
οnclick=, onfocus
等等。需要注意的是,在有些应用中是允许html标签出现的,甚至是
javascript
代码出现。因此,我们在过滤数据的时候需要仔细分析哪些数据是有特殊要求
- 例如输出需要html代码、
javascript
代码拼接、或者此表单直接允许使用等等,然后区别处理