php get post 安全性,由php的get post request 想到的安全问题(一)

概述:今天跟RD高工聊天,说到了get/post,进而延伸出了很多安全性的知识,现在总结如下:

1、get、post、request的区别;

2、post安全性较高,如果想更高,可以使用https,进而又想到了https跟http的区别,其中包含了SSL的只是;

3、单纯的https也是不够安全的,所以在登录的时候,会加一个登陆控件,其利用中间的算法,会进一步加密,提高安全等级;

4、如果这时候有人对键盘监听,同样会获取用户的账号跟密码,故会使用软键盘,现在很多银行会使用自己的软键盘,防止用户监听。

以上就是其中讨论的内容,但是由于自己有很多的点不是很懂,故后面几篇文章,会逐个介绍下这些知识点。

一、post get requesst的区别

1、post 跟get的几点不同:

(1)是否修改服务器资源:post 是修改服务器端的内容,get是获取服务器端的内容。get是幂等的,同时由于只获取服务端的信息,在这一点来说,应该是比较“安全”的,最起码不会改变服务器的资源信息。post则会修改服务器上面的资源,如增删改等。

(2)传递URL的方式:post是在http头里面传递参数的,具体在http的entity_body变量中。而get是在url中传递参数的,在url中加问号,将url跟参数列表分开,参数都是采用键值对的方式传递。post参数也是通过键值对来传输的。

(3)使用方式:get在一般场景下都可以使用,但是post必须在表单form里面使用,但是有时候人们会贪图方便,在更新服务器资源时会使用get代替post.

(4)长度限制:http协议没有对数据传输长度做限制,http协议规范也没有对数据传输长度做任何限制。在实际开发中,会做一些限制:

get:特定浏览器和服务器对url有限制,理论上没有限制,其限制取决于操作系统的支持

post:同样没有特定长度的限制,只是服务器会对特定的post长度做限制。

(5)安全性:此处的安全性不同于(1)中所讲的是不是修改服务器资源的问题,而是真正意义上的安全(security)。post会比get安全性更高。通过get提交数据,用户名密码等敏感信息会明文显示在URL中,因为第一、浏览器会有缓存,第二、如果查看历史记录,别人会获取敏感信息,第三、会造成csrf(cross-site request forgery )攻击.

(6)GET表单值可以通过_GET获取;但通过action的url设置的参数总是获取不到的,

跟是一样的,也就是说,在这种情况下,GET方式会忽略action页面后边带的参数列表。POST表单值可以通过_POST获取;但通过action的url参数设置的参数则可以不能通过_POST获取到。action=test.php?id=1这种就是GET方式传值,可以用$_REQUEST和$_GET接受传值,但不能用POST方式获取到值,即使表单是POST方式提交。所在,在提交表单时,如果action中同时有参数,最好只能通过POST表单方式,对于表单内数据,直接通过POST获取,对于action中参数,用GET获取。

(7)在php中,request可以接收post和get信息。

以上信息参考:http://blog.csdn.net/gideal_wang/article/details/4316691

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个通用于 GET 和 POST 请求的接口请求数据的安全方法PHP 代码示例: ```php function request($url, $data = array(), $method = 'GET') { $curl = curl_init(); $timeout = 30; $headers = array( 'Content-Type: application/json', 'Accept: application/json' ); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); if ($method == 'POST') { curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); } $result = curl_exec($curl); $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); if ($httpCode == 200) { return json_decode($result, true); } else { return false; } } ``` 这个方法使用 curl 库来发送请求。它支持 GET 和 POST 方法,并允许您传递数据。它还设置了一些默认值来确保请求的安全性,例如设置了请求头的 content-type 和 accept 属性,关闭了 SSL 验证等等。 使用此方法时,您只需要传递要调用的接口的 URL、请求的数据(如果需要)和请求的方法(默认为 GET)即可。例如: ```php $result = request('https://example.com/api/users', array('name' => 'John', 'email' => 'john@example.com'), 'POST'); ``` 这将向 https://example.com/api/users 发送一个 POST 请求,其包含名为 John 和电子邮件地址为 john@example.com 的用户数据。请求成功时,该方法将返回 JSON 格式的响应数据。如果请求失败,则返回 false。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值