web安全入门
安全事件
钓鱼
篡改网页
暗链(拿到控制权,修改网页链接)
webshell(拿到控制权,上传后门)
XSS
跨站脚本,Cross Site Script
危害:调取用户信息、钓鱼、制造蠕虫
XSS分类
存储型
反射型
DOM型
CSRF
cross-site request forgery,跨站请求伪造
概念:利用用户已登陆的身份,在用户毫不知情的情况下,以用户的名义完成非法操作
危害:
执行恶意操作(被转帐、被发垃圾评论等)
制造蠕虫
CSRF原理分析
CSRF攻击代码
点击劫持概念通过覆盖不可见的框架误导受害者点击而造成的攻击行为
示例
对应源码
特点
URL跳转概念借助未验证的URL跳转,将应用程序引导到不安全的第三方区域,从而导致的安全问题。
跳转方式
Header头跳转、
JavaScript跳转
META跳转
sql注入
sql injection
概念一种常见的web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击
原理
一次sql注入过程
获取用户请求参数
拼接到代码 ...
渗透测试入门
渗透测试
学习框架
渗透测试流程
ip信息收集ip反查域名
CDN
方法
绕过CDN:使用国外的ping检测工具
查看phpinfo文件
MX记录邮件服务
查询历史DNS服务
C段存活主机探测
端口信息收集
FTP-21
SSH-22
SMTP-25/465
WWW-80
NetBios SessionService-139/445
Mysql-3306
Tomcat-8080
Nmap功能
基础用法
网站信息收集网站指纹识别操作系统
网站服务/容器类型
敏感文件及目录探测github泄露
.git泄露
WEB-INF/web.xml泄露
网站waf识别
漏洞扫描
常见漏洞扫描工具
AWVS
AWVS功能特点
sqlmap
权限提升
本地提权
通过一些条件(应用程序漏洞、系统漏洞等),将一个低权限用户直接提升到系统最高权限
远程提权
攻击者通过漏洞利用程序直接获取远程服务器的权限
操作系统提权
windows提权思路
前期信息收集
Meterpreter提权
windows系统内核漏洞
windows服务漏洞
wind ...
渗透测试
安全事件
钓鱼
篡改网页
暗链(拿到控制权,修改网页链接)
webshell(拿到控制权,上传后门)
渗透测试
学习框架
渗透测试流程
ip信息收集ip反查域名
CDN
方法
绕过CDN:使用国外的ping检测工具
查看phpinfo文件
MX记录邮件服务
查询历史DNS服务
C段存活主机探测
端口信息收集
FTP-21
SSH-22
SMTP-25/465
WWW-80
NetBios SessionService-139/445
Mysql-3306
Tomcat-8080
Nmap功能
基础用法
网站信息收集网站指纹识别操作系统
网站服务/容器类型
敏感文件及目录探测github泄露
.git泄露
WEB-INF/web.xml泄露
网站waf识别
漏洞扫描
常见漏洞扫描工具
AWVS
AWVS功能特点
sqlmap
权限提升
本地提权
通过一些条件(应用程序漏洞、系统漏洞等),将一个低权限用户直接提升到系统最高权限
远程提权
攻击者通过漏洞利用程序直接获取远程服务器的权限
操作系统提权
window ...
RabbitMQ
知识总览
同步调用发出信息后,需要等待回复再去做别的事情
同步调用的优势时效性强,等待到结果后才返回
同步调用的问题
拓展性差
性能下降
级联失败问题
异步调用例如支付服务不在调用业务关联度低的服务,而是发送消息通知到Broker
异步调用的问题
MQ的技术选型
RabbitMQ的安装
上传mq.tar
docker load -i mq.tar
12345678910111213- ```bash # 安装容器 docker run \ -e RABBITMQ_DEFAULT_USER=itheima \ -e RABBITMQ_DEFAULT_PASS=123321 \ -v mq-plugins:/plugins \ --name mq \ --hostname mq \ -p 15672:15672 \ -p 5672:5672 \ -d \ rabbitmq:3.8-management
浏览器打开192.168.186.100:15672,即可访问RabbitMQ的客户端,用户名为itheima,密码为123321
...
docker
docker原理流程
docker安装卸载旧版首先如果系统中已经存在旧的Docker,则先卸载:
12345678yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
配置Docker的yum库首先要安装一个yum工具
1yum install -y yum-utils
安装成功后,执行命令,配置Docker的yum源:
1yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
这里安装过程如果报错Error downloading packages: containerd.io-1.6.27-3.1.el7.x86_64: [Errno 256] No more mirror ...
RabbitMQ入门
消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已
Rabbit RabbitMQ 使用 Erlang 语言编写,这是一个比较小众的编程语言,学习成本非常高,不像 Java、Scala、C 等编程语言学起来简单。所以虽然 RabbitMQ 也是开源的消息队列,但基于 RabbitMQ 做扩展和二次开发的情况是很少。
另一方面从使用的协议来看,RabbitMQ 支持 AMQP(Advanced Message Queuing Protocol) 协议,这也是主流消息队列不支持的。
Connection:一个网络连接,AMQP 协议通常使用长连接;
Channel:网络信道,建立在 Connection 之上的轻量级的连接,一个 Connection 可以有多个 Channel;
Exchange:交换器,接收消息后将消息路由转发给绑定(Binding)的 Queue;
Binding:Exchange 和 Queue 之间的虚拟连接;
Routing Key:这个概念在图中没有画, ...
Sentinel--服务容错
服务雪崩效应
在分布式系统中,由于网络原因或自身的原因,服务一般无法保证 100% 可用。如果一个服务出现了问题,调用这个服务就会出现**线程阻塞**的情况,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。
由于服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的 “雪崩效应” 。
我们无法杜绝雪崩源头的发生,只有做好足够的容错,保证在一个服务发生问题时不会影响到其他服务的正常运行,也就是“雪落而不雪崩”。
常见的容错方案常见的容错思路有隔离、超时、限流、熔断、降级
隔离 它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖。当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务。常见的隔离方式有:线程池隔离和信号量隔离
超时 在上游服务调用下游服务的时候,设置一个最大响应时间,如果超过这个时间,下游未作出反应, 就断开请求,释放掉线程
限流 限流就是限制系统的输入和输出流量已达到保护系统的目的。为了保证系统的稳固 ...
熔断、降级
架构图熔断降级限流当系统的处理能力不能应对外部请求的突增流量时,为了不让系统崩溃,必须采取限流的措施
流量计数法
限制每秒请求数量
滑动时间窗口
比较流行的一种方法,看时间窗口内的请求数量,窗口内是各个时间窗格,但流量控制不够精细
漏桶算法
把漏桶想成一个漏斗的意思,先将请求缓存起来,然后均匀的发送给服务端,相较于滑动时间窗口,它可以削峰填谷,但是有几点要注意:
漏桶的大小要多大
漏桶给服务端的发送速率
令牌桶算法
类似于去医院挂号看病,医院每天放号的数量是有限的,起到限流的作用
取不到令牌,只能被拒绝或者走服务降级的逻辑
hystrix限流
使用信号量限流,在提供服务的方法上加上只能有20个并发线程来访问这个方法
熔断访问服务器时,通过断路器做代理进行访问,当失败超过设置的阈值时断路器就不再转发请求
断路器有三种状态,分别是
CLOSED:正常工作
OPEN:达到阈值后,就不再转发请求
HALF OPEN:尝试查看服务是否已经恢复
服务降级站在系统全局的角度上,是对非核心、非关键的服务进行降级
可以使用hystrix降级
异常降级:在方法上加上@Hy ...
Springcloud
SpringCloudSpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud
随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。 从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构—>垂直应用架构—>分布 式架构—>SOA架构—>微服务架构,当然还有悄然兴起的Service Mesh(服务网格化)。
单体架构 互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能集中在一个项目中开发,打成一个包,然后部署到一台tomcat服务器上部署成本低,且架构简单;但是耦合度高.比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块
垂直应用架构
随着访问量的逐渐增大,单一应用只能依靠增加节点来应对,但是这时候会发现并不是所有的模块 都会有比较大的访问量. 还是以上面的电商为例子, 用户访问量的增加可能影响的只是用户和订单模块, 但是对消息模块 的影响就比较小. 那么此时我们希望只多增加几个 ...