1. 程式人生 > >用PHP做伺服器介面客戶端用http協議POST訪問安全性一般怎麼做

用PHP做伺服器介面客戶端用http協議POST訪問安全性一般怎麼做

我的問題是,如果不做安全相關處理的話,一些可能改變資料庫的操作可能會遭遇垃圾資料提交什麼的,畢竟要找到這些資訊只要找個http包就可以了

系統無使用者登入

新手問題(從來沒做過服務端開發),如果可以,給幾個主流方法的連結,多謝

直觀總結方法二:

1.請求頭裡帶使用者username和password,到伺服器端做驗證,通過才繼續下邊業務邏輯。
有點:防止了伺服器端api被隨意呼叫。
缺點:每次都互動使用者名稱和密碼,互動量大,且密碼明文傳輸不安全。

2.第一次請求,要求username和password,驗證通過,種cookie到客戶端,app儲存cookie值。
每次請求帶上cookie。
點評:和pc上瀏覽器認證的原理一樣了。

以上兩點,只有註冊使用者,才能有權訪問業務邏輯,而app有大量的不需要註冊資料api

3.制定一個token生成規則,按某些伺服器端和客戶端都擁有的共同屬性生成一個隨機串,客戶端生成這個串,伺服器收到請求也校驗這個串。
缺點:隨機串生成規則要保密。
比如:一個使用php框架的工程,框架每次互動都會有 module和action兩個引數做路由,這樣的話,我就可以用下邊這個規則來生成token

app要請求使用者列表,api是“index.php?module=user&action=list”
app生成token = md5sum ('user'.'2012-11-28'.'#[email protected]

%!'.list) = 880fed4ca2aabd20ae9a5dd774711de2;
實際發起請求為 “index.php?module=user&action=list&token=880fed4ca2aabd20ae9a5dd774711de2”

伺服器端接到請求用同樣方法計算token,

  1. <span class="preprocessor" style="color:rgb(153,153,153); font-weight:bold"><?php</span>  
  2. <span class="variable" style="color:teal"
    >$module</span> = <span class="variable" style="color:teal">$_GET</span>[<span class="string" style="color:rgb(221,17,68)">'module'</span>];  
  3. <span class="variable" style="color:teal">$action</span> = <span class="variable" style="color:teal">$_GET</span>[<span class="string" style="color:rgb(221,17,68)">'action'</span>];  
  4. <span class="variable" style="color:teal">$token</span> = md5sum(<span class="variable" style="color:teal">$module</span>.date(<span class="string" style="color:rgb(221,17,68)">'Y-m-d'</span>,time()).<span class="string" style="color:rgb(221,17,68)">'#[email protected]%!*'</span>.<span class="variable" style="color:teal">$action</span>);  
  5. <span class="keyword" style="font-weight:bold">if</span>(<span class="variable" style="color:teal">$token</span> != <span class="variable" style="color:teal">$_GET</span>[<span class="string" style="color:rgb(221,17,68)">'token'</span>]){  
  6.     alarm(<span class="string" style="color:rgb(221,17,68)">'access deny'</span>);  
  7.     <span class="keyword" style="font-weight:bold">exit</span>();  
  8. }  
  9. <span class="preprocessor" style="color:rgb(153,153,153); font-weight:bold">?></span>  

先提這三個,都在專案中用過。

相關推薦

PHP伺服器介面客戶http協議POST訪問安全性一般怎麼

我的問題是,如果不做安全相關處理的話,一些可能改變資料庫的操作可能會遭遇垃圾資料提交什麼的,畢竟要找到這些資訊只要找個http包就可以了 系統無使用者登入 新手問題(從來沒做過服務端開發),如果可以,給幾個主流方法的連結,多謝 直觀總結方法二: 1.請求頭裡帶使用

Android客戶採用Http 協議Post方式請求與服務進行資料互動

本示例以Servlet為例,演示Android與Servlet的通訊。 眾所周知,Android與伺服器通訊通常採用HTTP通訊方式和Socket通訊方式,而HTTP通訊方式又分get和post兩種方式。至於Socket通訊會在以後的博文中介紹。 HTTP協議簡介:

Springboot (打成jar執行)上傳圖片到伺服器客戶可直接通過url訪問

本地測試時,直接上傳圖片到resources/static 檔案下沒有問題,但是打成jar後,直接報錯 @RequestMapping(value = "/oldUploadImage",method = RequestMethod.POST) p

實現PHP伺服器+Android客戶(Retrofit+RxJava)第二天客戶介面的大致實現

本篇文章講的是客戶端的部分,也會丟擲一些伺服器端實現的想法。 上一篇文章:PHP伺服器+Android客戶端(Retrofit+RxJava)實踐第一天 連通了PHP伺服器和Android客戶端,客戶端請求,伺服器響應之後在客戶端列印了hello world,

node.js模擬伺服器客戶

伺服器 程式碼 var net = require("net") var server = net.createServer(); server.listen(12306,"127.0.0.1") server.on("listening",function(){ consol

Android與PHP互動:客戶HTTP協議與服務通訊

        為了實現Android客戶端和服務端的通訊,Android SDK為我們提供了Apache的HttpClient來方便我們使用各種HTTP服務。可以把HttpClient看成一個瀏覽器,通過它可以方便地發出GET請求和POST請求來獲得服務端響應。 下面我們

linux下多執行緒實現socket伺服器客戶的非同步通訊

前面介紹了用select函式來實現socket的非同步收發資料,但是select函式也有一些缺陷,要使socket能持續地通訊,select必須不停地檢測,這樣程序就會一直阻塞在這裡,限制了功能的擴充套件,這裡我們用多執行緒的方式,另建立兩個執行緒用來發送/接收

[計網] python語言開發一個簡單的web伺服器客戶

伺服器:      當客戶聯絡時建立一個連線套接字 從這個連線接收HTTP請求(*)      解釋該請求所請求的特定檔案      從伺服器的檔案系統獲取該檔案      併發送檔案內容     

Java實現簡單的檔案上傳伺服器客戶

/** * 使用TCP協議實現上傳功能的伺服器端 * 思路: * 新建ServerSocket * 等待客戶端連線 * 連線上後開啟子執行緒,把連接獲取的Socket傳給子執行緒 * 迴圈進行 * @author yajun * */ public class UploadServer {

socket 通訊寫出客戶伺服器的通訊 , 要求客戶傳送資料後能夠回顯相同的資料

比較基礎的一個服務端客戶端互相通訊的程式/** * @author john socket 的伺服器端,接收到資料後列印到控制檯 的資料 * */ public class ServiceSocket_1 { public static void main(

在C#客戶HTTP上傳文件到Java服務器

lnp mime類型 timeout pat tle html 大小 首部 doctype 在C#客戶端用HTTP上傳文件到Java服務器 來源:http://www.cnblogs.com/AndyDai/p/5135294.html 最近在做C / S 開

linux centOs中安裝好資料庫,客戶plsql連線oracle

  原創作品,轉載請在文章顯眼位置註明出處:https://www.cnblogs.com/sunshine5683/p/10030375.html  首先,回顧上篇 CenOs7安裝oracle圖文詳細過程(02) ,安裝好oracle後再伺服器端使用sqlplu

實現PHP伺服器+Android客戶(Retrofit+RxJava)第一天基礎搭建

前段不知道怎麼的android寫著寫著有些寫不動了,於是開始搗鼓php,想要自己寫個網站什麼的裝裝逼,於是最近android就有些荒廢了,說要解析fresco的也放了很久,之前在github上提問,昨天突然收到了facebook工程師的回信,又記起來這件事情,本

實現PHP伺服器+Android客戶(Retrofit+RxJava)第四天客戶伺服器通訊的實現

我的上一篇文章已經介紹了retrofit+rxjava的配置(包括快取),從這一篇開始就開始講我要實現的這個app網路請求部分的構思,也就是要請求那些資料,資料的型別等等。 我要實現的客戶端 看圖: 看了介面基本應該能知道要實現的效果了

實現PHP伺服器+Android客戶(Retrofit+RxJava)第五天學一學ndk開發吧

前兩天發現一本相當可以的書Java 效能權威指南,粗略的看了兩天,對於我這種還在去中級的路上的人,看著的確是挺累的,所以也就歇了幾天沒有寫部落格了。看了那麼高深的東西還是要繼續回來鞏固一下實戰水平,所以今天繼續來講我的這個應用的實現過程,在上篇文章實現PHP伺服

實現PHP伺服器+Android客戶(Retrofit+RxJava)第三天Retrofit的配置以及快取的實現

上一篇講了介面,這篇文章就要講客戶端網路請求部分的內容了,主要用到的就是Retrofit+RxJava,其實準確來說是Retrofit+RxJava+OkHttp, 最新的Retrofit是2.0.2版本,原始碼地址:retrofit 學習retrofit:

實現PHP伺服器+Android客戶(Retrofit+RxJava)第六天推送的實現

廢話不多說,今天來說說近幾天的成果。 如何實現推送 android客戶端nio的使用 為啥要使用長連線 長連線的建立 php伺服器如何實現長連線 後期需要優化的部分 如何實現推送 推送的原理其實也很簡單,伺服器和客戶端實現長連線,實現了長連線之後就

gSoap開發 C/C++ 客戶 連線Web Service

轉載地址: http://blog.csdn.net/zhaiwenjuan/article/details/6590941 少了個安裝步驟 1、下載解壓gsoap檔案2、安裝所需的相關工具    sudo apt-get install g++&nb

go實現的kafka客戶,基於sarama和sarama-cluster

工作中需要將原先的訊息佇列替換成kafka,於是接觸了基於go實現的sarama,又因為sarama不支援consumer group,於是又使用了sarama cluster,同時又希望儘量保證消費一次的語義,說到這個exactly once,sarama從去年就立了issue要支援e

服務非阻塞socket客戶阻塞socket

       之前, 我們簡要第瞭解了一下非阻塞的socket。 在本文中, 我們讓服務端用非阻塞socket, 客戶端依然用我們熟悉的阻塞的socket.        服務端程式如下(非阻塞的socket): #include <stdio.h> #in