当前位置:网站首页>别看了,这就是你的题呀
别看了,这就是你的题呀
2022-08-01 22:08:00 【phpstory】
一、浏览器输入URL到页面加载发生了什么
1、DNS解析:把域名解析成对应的ip
2、浏览器与网站建立TCP连接(三次握手)
第一次握手:客户端向服务器端发送请求(SYN=1) 等待服务器确认;
第二次握手:服务器收到请求并确认,回复一个指令(SYN=1,ACK=1);
第三次握手:客户端收到服务器的回复指令并返回确认(ACK=1)。通过三次握手,建立了客户端和服务器之间的连接,现在可以请求和传输数据了。
客户端问服务器:哥们你吃饭了么?
服务器回答客户端并且反问:我吃饭了,你呢?
客户端回答服务器:我也吃了。
3、请求和传输数据
4、浏览器渲染页面
5.链接结束(四次挥手)
客户端 -> 服务端:请求完毕
服务端 -> 客户端:知道请求完毕
服务端 -> 客户端:发送完毕
客户端 -> 服务端:知道发送完毕
二、php接口怎么保证安全性
1、Token授权机制 2、时间戳超时机制 3、签名机制
三、Nginx 负载均衡4种模式
4 种负载均衡算法
upstream 支持4种负载均衡调度算法:
A)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器;
B)ip_hash:每个请求按访问IP的hash结果分配,同一个IP客户端固定访问一个后端服务器。可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。
C)url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。后台服务器为缓存的时候效率。
D)fair:这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持 fair的,如果需要使用这种调度算法,必须下载Nginx的 upstream_fair模块。
四、array_merge和array+array的区别
1、键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖),array+array 不会重新索引
<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
?>
Array
(
[0] => red
[1] => green
[2] => blue
[3] => yellow
)
print_r(($a1+$a2));
Array ( [0] => red [1] => green )
2、键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值
<?php
$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(($a1+$a2));
?>
Array
(
[a] => red
[b] => green
[c] => blue
)
print_r(array_merge($a1,$a2));
Array
(
[a] => red
[b] => yellow
[c] => blue
)
注意array+array
<?php
$a1=array(2=>"red","green");
$a2=array(6=>"blue",3=>"yellow");
print_r(($a1+$a2));
?>
Array
(
[2] => red
[3] => green
[6] => blue
)
五、常见的 PHP 安全性攻击
1、SQL注入
将 PHP 的内置 mysql_real_escape_string() 函数用作任何用户输入的包装器。这个函数对字符串中的字符进行转义,使字符串不可能传递撇号等特殊字符并让 MySQL 根据特殊字符进行操作。
使用预处理语句并绑定变量
2、跨站点脚本攻击(XSS攻击)
strip_tags() 函数,这个函数可以清除任何包围在 HTML 标记中的内容
或者使用htmlspecialchars() 函数。htmlentities()
3、跨站点请求伪造(CSRF)
Laravel框架中避免CSRF攻击很简单:Laravel自动为每个用户Session生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如果不是则请求失败。【该原理和验证码的原理是一致】
边栏推荐
- SOM网络2: 代码的实现
- SAP Spartacus Accessibility E2E 端到端测试
- (翻译)按钮的对比色引导用户操作的方式
- shell specification and variables
- xctf attack and defense world web master advanced area web2
- Ten years after graduation, financial freedom: those things that are more important than hard work, no one will ever teach you
- 熟悉的朋友
- 字符串——Trie
- [Niu Ke brush questions-SQL big factory interview questions] NO4. Travel scene (a taxi)
- scikit-learn no moudule named six
猜你喜欢
力扣第 304 场周赛复盘
Postman 批量测试接口详细教程
游戏元宇宙发展趋势展望分析
LeetCode952三部曲之二:小幅度优化(137ms -> 122ms,超39% -> 超51%)
Homework 8.1 Orphans and Zombies
LeetCode952三部曲之一:解题思路和初级解法(137ms,超39%)
第一讲 测试知多少
罗克韦尔AB PLC RSLogix5000中的比较指令使用方法介绍
如何防范 DAO 中的治理攻击?
Ten years after graduation, financial freedom: those things that are more important than hard work, no one will ever teach you
随机推荐
教你VSCode如何快速对齐代码、格式化代码
安全第五次课后练习
小程序毕设作品之微信美食菜谱小程序毕业设计成品(8)毕业设计论文模板
(*゚ヮ゚)*【精品C语言整理】*(゚ヮ゚*)女盆友缠着你让你教她写代码怎么办?安排,三万字博文带你走遍C语言,从此不再害怕编程
毕业十年,财富自由:那些比拼命努力更重要的事,从来没人会教你
基于 OData 模型和 JSON 模型的 SAP UI5 表格控件行项目的添加和删除实现
(Translation) How the contrasting color of the button guides the user's actions
力扣第 304 场周赛复盘
小程序毕设作品之微信美食菜谱小程序毕业设计成品(5)任务书
AIDL communication
more grown, more lonely
RxJs SwitchMapTo 操作符之移花接木
NgRx Selector 的 Memoization 特性学习笔记
找工作必备!如何让面试官对你刮目相看,建议收藏尝试!!
SAP Spartacus NgExpressEngineDecorator 的工作原理
网络水军第一课:手写自动弹幕
APP专项测试:流量测试
2022 版 MySQL 巅峰教程,收藏好,慢慢看
Flutter基础学习(一)Dart语言入门
365 days challenge LeetCode1000 questions - Day 046 Generate a string with odd number of each character + add two numbers + valid parentheses