讨论“get”和“post”安全性

2024-09-06 03:08
文章标签 安全性 post 讨论 get

本文主要是介绍讨论“get”和“post”安全性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

get”安全,还是“post”安全?这或许是大家总结两者必须要分析的内容,因为这涉及到我们将内容从浏览器传送到服务器的安全性,选择不当将会带来巨大的不安全因素,从而可能带来巨大的损失。这篇博客,我将阐述一下,当然更多的还是希望各位大神发表一下见解,讨论一下下!

 

          首先,我们来看一下两者最基本的区别:


  1. GET请求通过URL(请求行)提交数据,在URL中可以看到所传参数。POST通过“请求体”传递数据,参数不会在url中显示
  2. GET请求提交的数据有长度限制,POST请求没有限制。
  3. GET请求返回的内容可以被浏览器缓存起来。而每次提交的POST,浏览器在你按下F5的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。
  4. GET对数据进行查询,POST主要对数据进行增删改!简单说,GET是只读,POST是写。

 

         这是大家经常总结的两者之间的区别!前两天一位技术大牛给我讲解两者的安全性?大家看一下我们之间的对话:

         大牛:你认为getpost两者谁更安全一些呢?


         菜鸟(我):我认为post,更安全一些,因为get传输方式将在URL中显示参数,更容易引发一些“不怀好意”人的兴趣,例如上边出现了usernameuserpwd等特殊字符时,更容易给他们一些兴趣。虽然可以编码,当是也是可以解码的。而post则对方看不见,即使一些高手截获这些信息,也需要它筛选还有解码,相对来说比get方法更加安全。当然是没有绝对的安全的。


         大牛:NO!你只看了表面!HTTP协议中提到GET是安全的方法(safe method),其意思是说GET方法不会改变服务器端数据,所以不会产生副作用。如果是该用POST的地方用了GET,又说GET不安全,那GET也太冤枉了。也就是说,只要我们正确选择使用GETPOST,那么GET是安全的。


         菜鸟(我):额……


         此段对话到此结束,没有再争论下去。因为它拿出了HTTP协议,当做了论据,这是在IT界很权威的文档。我没有很充足的理由去辩论。当时我还是认为它的这个说法有点不合适。


         在我认为,他把原因和结论弄反了。他的观点是:只要我们正确使用二者,因为GET方法中不对数据进行修改,不传送一些保密的信息,而这些需要由POST来传输,所以说GET不存在安全问题,而需要注意的是POST传输的安全问题。


         我看来,正确使用二者,怎么算GETPOST两者正确的选择来使用了。这些规矩或者规范,是怎么制定的呢?为什么说get不能传送加密信息和修改数据呢?原因还是说它没有POST安全,所以HTTP协议规定了它用来传输不重要的读操作,所以才不会因为它而产生安全问题。因为它传送的数据不值得别人去盗取,没有价值。


           所以在我看来,还是POST这种方式,比GET更安全。既然是做比作,比作着来学习,我们就需要来让它们做相同的工作来看效果。总不能一个小孩儿跑50米比一个大人跑100米用的时间少,就说小孩儿的跑步速度比大人的快吧?

 

           虽然争论这个没有太大的用处,没有太大的意义,但是还是想写写,想听听:1,大家对“POSTGET安全”的看法,2,对“讨论两者安全这件事”的看法,3,对“如何对待学习知识的看法,是该囫囵吞枣,还是认真对待。那些该囫囵吞枣,那些该认真对待”的看法…… 


------------------------------------------------------------------------------

网友评论:

post比get安全?……o(︶︿︶)o 唉
你去下载个WPE封包截取玩玩,看它俩是不是一家人,是不是都安全……安全性是一样儿一样的。如果说是浏览器帮你缓存缓存,那就另当别论,当然,最好把敏感数据加密后再get

看看网址都没啥,你可以弄个token啊,先加密,把token放在session,服务端在通过token解密。除非服务器哼哼
他俩的区别呢:get快点post慢点,,GET传输快。其次,上传文件知道吧?不知道你用get上传还是post呢,你去get上传10M以上的文件给我看看,要是说编码弄到url里,10M你编码吧,编出来应该有个20M,换成小说就由千万余字,不说浏览器,就说服务器应该能等个10分钟处理完吧,我再多发送几个,让你服务器休克。。。

它俩都是提交数据,并且也都能返回,猫咪也知道。。。get发送和返回的谁都能看到,,post发送和返回内容得靠工具了,就像chrome浏览器开发者工具。o(︶︿︶)o 唉不多说了。


来自:http://blog.csdn.net/liujiahan629629/article/details/18511079

这篇关于讨论“get”和“post”安全性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140823

相关文章

10 Source-Get-Post-JsonP 网络请求

划重点 使用vue-resource.js库 进行网络请求操作POST : this.$http.post ( … )GET : this.$http.get ( … ) 小鸡炖蘑菇 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-w

API28_OKgo_get注意事项

1: implementation 'com.lzy.net:okgo:2.1.4' 2:在BaseApplication中onCreate()中初始化initOKgo() private void initOKgo() {//---------这里给出的是示例代码,告诉你可以这么传,实际使用的时候,根据需要传,不需要就不传-------------//HttpHeaders headers

Unity Post Process Unity后处理学习日志

Unity Post Process Unity后处理学习日志 在现代游戏开发中,后处理(Post Processing)技术已经成为提升游戏画面质量的关键工具。Unity的后处理栈(Post Processing Stack)是一个强大的插件,它允许开发者为游戏场景添加各种视觉效果,如景深、色彩校正、辉光、模糊等。这些效果不仅能够增强游戏的视觉吸引力,还能帮助传达特定的情感和氛围。 文档

项目一(一) HttpClient中的POST请求和GET请求

HttpClient中的POST请求和GET请求 一、HttpClient简述 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLU

聊聊分布式,再讨论分布式解决方案

前言 最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。 接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340

apt-get update更新源时,出现“Hash Sum mismatch”问题

转载自:apt-get update更新源时,出现“Hash Sum mismatch”问题 当使用apt-get update更新源时,出现下面“Hash Sum mismatch”的报错,具体如下: root@localhost:~# apt-get update ...... ...... W: Failed to fetch http://us.archive.ubuntu.com/ub

ajax xmlhttprequest使用post传参数并向后台获取数据

ajax xmlhttprequest向后台传数据有两种方式,一种是直接在地址URL后面加入参数,后台用Request.QueryString来获取,另外一种是采用POST来传,send方法发送参数对,比如send("a=3&b=4"),后台用Request.Form[“a”]来获取3,同理Request.Form["b"]获取4   前台代码: <%@ Page Titl

Flutter-使用dio插件请求网络(get ,post,下载文件)

引入库:dio: ^2.1.13可直接运行的代码:包含了post,get 下载文件import 'package:flutter/material.dart';import 'package:dio/dio.dart';void main() {runApp(new MaterialApp(title: 'Container demo',home: new visitNetPage(),)