post真的安全么?
经常听到有人这样说,Post比Get更安全,似乎这种想法充满了整个网络,带给人根深蒂固的影响,但是Post真的比Get更安全么?
Http请求方式
Http请求发送方式常用的就是以下两种:
① Get机制
② Post机制
Get机制
Get机制的限制,比如最大1024字节,这个略去不表,Get最大的特点是提交时将参数通过url来发送。
Post机制
Post机制,实际是将数据http的数据部分,只不过不在url里面显示罢了。
请求举例
Get机制
例如:请求这个url: http://topic.csdn.net/u/20121016/08/2f7960fd-31bd-44ee-bec5-ed297af60039.html?seed=996321166&r=79901963
可以看出这是明显的get方式,有参数,通过chome浏览器得到
从url里面就可以得到数值,但是如果是底层的调用,比如ajax请求,就不会在浏览器的地址栏中有显示,比如下面的请求:
Post机制
比如:博客园的登录请求:
http://passport.cnblogs.com/login.aspx?ReturnUrl=http%3a%2f%2fwww.cnblogs.com%2f
通过浏览器得到:
可以看到,这是post请求,并且地址栏里是没有参数信息,更没有密码等等信息,但是往下看,没错,Post请求一样,是将内容以明文的方式在传输,以下通过wireshark截包来看:
数据包的发送,如下:
上图蓝色部分是Post的数据部分,post其实只是将数据写到了http尾部,如此而已。所以此处从安全上来讲,与不显示的后端ajax的Get请求,其实在安全性上是一样的。所以post更安全么,不见得,因为post的设计之初,本来就不是为了安全而来的。
扩展一下
Ajax跨域
不让ajax跨域,这样就来得合理了,因为如果允许跨域,那只需要写几行js代码,这样就会造成重要信息(比如密码)的泄漏。
Tcp连接个数
现代的浏览器,为了加快下载(加载)速度,已经将RFC文档里面的”should be at most 2 connections”中的should理解的出神入化,因为RFC里面仅仅是should而不是must,所以现代的浏览器同时允许建立的tcp连接一般是超过2个tcp连接的。
Tcp协议
就像上篇TCP连接检测里面提到的那样,“tcp只是数据的发送与接收,包括握手,断开以及rst,time_wait,close_wait 等等。“,Http同样如果,知道协议,其实自己写一个简单的IIS真不费力。
最后
前面提到,TCP的连接个数,说到这里突然想到了一个问题,同时也再深入的扩展一下,为什么一台机器connect同一个IP,port的tcp连接数不能超过65535(当然实际65535也是达不到的)个呢?
答案请看这里《tcp的65535个连接之迷》
作者:OUZI(connoryan)
出处:http://www.cnblogs.com/ouzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述