1. 程式人生 > >APP介面安全設計

APP介面安全設計

在app開放介面api的設計中,避免不了的就是安全性問題,因為大多數介面涉及到使用者的個人資訊以及一些敏感的資料,所以對這些介面需要進行身份的認證,那麼這就需要使用者提供一些資訊,比如使用者名稱密碼等,但是為了安全起見讓使用者暴露的明文密碼次數越少越好,我們一般在web專案中,大多數採用儲存的session中,然後在存一份到cookie中,來保持使用者的回話有效性。但是在app提供的開放介面中,後端伺服器在使用者登入後如何去驗證和維護使用者的登陸有效性呢,以下是參考專案中設計的解決方案,其原理和大多數開放介面安全驗證一樣,如淘寶的開放介面token驗證,微信開發平臺token驗證都是同理。

簽名設計
對於敏感的api介面,需使用https協議

https是在http超文字傳輸協議加入SSL層,它在網路間通訊是加密的,所以需要加密證書。

https協議需要ca證書,一般需要交費。

簽名的設計

原理:使用者登入後向伺服器提供使用者認證資訊(如賬戶和密碼),伺服器認證完後給客戶端返回一個Token令牌,使用者再次獲取資訊時,帶上此令牌,如果令牌正取,則返回資料。對於獲取Token資訊後,訪問使用者相關介面,客戶端請求的url需要帶上如下引數:

時間戳:timestamp

Token令牌:token

然後將所有使用者請求的引數按照字母排序(包括timestamp,token),然後更具MD5加密(可以加點鹽),全部大寫,生成sign簽名,這就是所說的url簽名

演算法。然後登陸後每次呼叫使用者資訊時,帶上sign,timestamp,token引數。

例如:原請求https://www.andy.cn/api/user/update/info.shtml?city=北京 (post和get都一樣,對所有引數排序加密)

加上時間戳和token

https://www.andy.cn/api/user/update/info.shtml?city=北京×tamp=12445323134&token=wefkfjdskfjewfjkjfdfnc
然後更具url引數生成sign

最終的請求如

https://www.andy.cn/api/user/update/info.shtml?city=北京×tamp=12445323134&token=wefkfjdskfjewfjkjfdfnc&sign=FDK2434JKJFD334FDF2
其最終的原理是減小明文的暴露次數;保證資料安全的訪問。

具體實現如下:

1. api請求客戶端想伺服器端一次傳送用使用者認證資訊(使用者名稱和密碼),伺服器端請求到改請求後,驗證使用者資訊是否正確。

如果正確:則返回一個唯一不重複的字串(一般為UUID),然後在Redis(任意快取伺服器)中維護Token----Uid的使用者資訊關係,以便其他api對token的校驗。

如果錯誤:則返回錯誤碼。

2.伺服器設計一個url請求攔截規則

(1)判斷是否包含timestamp,token,sign引數,如果不含有返回錯誤碼。

(2)判斷伺服器接到請求的時間和引數中的時間戳是否相差很長一段時間(時間自定義如半個小時),如果超過則說明該 url已經過期(如果url被盜,他改變了時間戳,但是會導致sign簽名不相等)。

(3)判斷token是否有效,根據請求過來的token,查詢redis快取中的uid,如果獲取不到這說明該token已過期。

(4)根據使用者請求的url引數,伺服器端按照同樣的規則生成sign簽名,對比簽名看是否相等,相等則放行。(自然url簽名 也無法100%保證其安全,也可以通過公鑰AES對資料和url加密,但這樣如果無法確保公鑰丟失,所以簽名只是很大程 度上保證安全)。

(5)此url攔截只需對獲取身份認證的url放行(如登陸url),剩餘所有的url都需攔截。

3.Token和Uid關係維護

對於使用者登入我們需要建立token--uid的關係,使用者退出時需要需刪除token--uid的關係。

相關推薦

APP介面安全設計

在app開放介面api的設計中,避免不了的就是安全性問題,因為大多數介面涉及到使用者的個人資訊以及一些敏感的資料,所以對這些介面需要進行身份的認證,那麼這就需要使用者提供一些資訊,比如使用者名稱密碼等,但是為了安全起見讓使用者暴露的明文密碼次數越少越好,我們一般在web專案

app介面安全性設計淺析

之前面試的時候被問到這個,app介面安全性,這個因不同的場景,要考慮的情況也不一樣。下面把自己的見聞和思考寫一下吧。 sign=MD5(userId+timestamp+randomString) timestamp 一般用來給伺服器驗證請求時間區間,5

APP介面優化設計:6種常見資料載入頁面方案

當我們設計完app之後,肯定會進行多個版本多迭代更新、介面多優化等工作。今天小編就跟大家來聊聊app資料載入的6種常見方案。同時把每一種資料載入頁面方案等優缺點分享給大家! 1.全屏載入全屏載入就是整個螢幕白屏進行資料載入,一般會有菊花轉或進度條配合,常用於手機網頁的載入中,

手機APP介面-UI設計教程

裝載:http://www.ui63.com/html/uicollege/uisjjc/2015/0623/16875.html 溫馨提示:圖片質量較高,若載入慢請耐心等候! 來源:uicn  

APP介面設計安全問題

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

手機APP介面:設計一個獲取手機驗證碼的功能

現在的專案中,都會涉及到一個手機驗證碼獲取功能 我們今天就來探討下如何更好的設計好這個看似小的功能 給APP設計一個獲取手機驗證碼的介面 根據業務邏輯,初步總結了可能會有以下業務場景 需要用到手機驗證碼的驗證功能 大家來看下圖片吧 login:登入 reg

APP介面設計流程和APP產品設計流程知識彙總

  本文轉載自網際網路,如有侵權,請聯絡我及時刪除。謝謝。 第一部分:APP介面設計流程概要分享,總共11個步驟。   1. 確定你的創意方向或者圍繞主題展開 您的創意是否有人做過,如果有類似的app,那就要多多考慮,爭取超越並且有一些獨特的優化設計在其中

App介面設計之token的php實現

  App介面設計之token的php實現 為了保證移動端和服務端資料傳輸相對安全,需要對介面進行加密傳輸。 一、token的設計目的:  因為APP端沒有和PC端一樣的session機制,所以無法判斷使用者是否登陸,以及無法保持使用者狀態,所以就需要一種機制

關於APP介面設計

最近一段時間一直在做APP介面,總結一下APP介面開發過程中的注意事項: 1、效率:介面訪問速度 APP有別於WEB服務,對伺服器端要求是比較嚴格的,在移動端有限的頻寬條件下,要求介面響應速度要快,所有在開發過程中儘量選擇效率高的框架,PHP建議使用YAF框架。 2

App架構設計經驗談:介面設計

轉自: http://keeganlee.me/post/architecture/20160107 App與伺服器的通訊介面如何設計得好,需要考慮的地方挺多的,在此根據我的一些經驗做一些總結分享,旨在拋磚引玉。 安全機制的設計 現在,大部分App的介面都採用RES

iOS和Android的app介面設計規範

最近從一個程式猿變成產品汪了!人生職場的一次轉變吧!從開發人員轉產品,也需要很多基本工具和規範需要學習; 以下是自己對APP設計過程中一些自己寫學習和總結,難免有錯,歡迎指正; 在產品道路成長中,記錄一下iOS和Andoird的介面設計規範,方便進行標準的產

XX公司APP介面設計規範v1

APP介面設計規範v1 張遂程 2018年02月06日16:15:03 前言 沒有最優的方案,只有最適合的方案,本文指出對APP介面設計的一些規範與大家分享和共勉,涉及到APP介面設計規範v1.0,設計案例的分享,和一些PHP編碼的要求,目的在於

關於app介面呼叫時如何使session和token票據來保證介面呼叫的安全

傳統的http請求時無狀態的。及一個使用者向伺服器端傳送請求時,當再次傳送請求時不能判斷是同一個使用者傳送 的請求,及無法記錄使用者資訊。 Session是指一個終端使用者與互動系統進行通訊的時間間隔,通常指從註冊進入系統到登出退出系統之間所經過的時間也成為會話時間。 to

APP登入介面UI設計欣賞

今天分享的是,17個優秀的APP登入介面UI設計效果欣賞,風格都非常的前衛,有很強的現代感,有的個性十足,APP登入介面好設計也不好設計,好設計的地方是元素少容易排版,不好設計的地方是要做個性化很難,而今天分享的這些就能給你帶來一些靈感,希望對您有用,enjoy! Hy

App介面設計規範-字型規範

通過對不同型別的app進行總結,總結出app的字型規範。 一、字型選擇 1.IOS:蘋果ios 9系統開始,系統最新的預設中文字型是:蘋方。英文字型是: San Francisco 2.Android:英文字型:Roboto,中文字型:Noto 二、案例分析 1.以今日頭條介面為例,

ThinkPhp3.2.3 多專案 後臺 APP介面設計 框架設計

↓↓↓專案檔案組成部分↓↓↓ APP檔案是後臺,index.php是入口檔案 Interface檔案是介面,注意這裡不要用api命名!可能會有問題!interface.php是入口檔案 注:兩個入口檔案唯一的區別就是interface比app入口檔案多

從零開發一款APP 三、Java Web後端登陸介面設計

一、邏輯設計: 在設計好並做完註冊介面後,我們就需要做登陸介面了,其實登陸介面非常的簡單,去資料庫中驗證其使用者名稱和密碼(當然,傳輸的資料要進行加密,我們會在後面統一加密方法),如果正確,那麼要傳回其相應的token,使用者得到其token之後,以後就可以使用這個tok

23個移動app介面上的旋鈕和刻度盤設計示例

從最初進入電子裝置領域,旋鈕和刻度盤的由最初的功能性設計轉變為時尚的外觀設計元素,比如在移動app中。 這種轉變並意外,旋鈕和刻度盤不需要佔用移動裝置的太多空間,並可以簡單地為使用者提供一些列的引數和資料。旋鈕和刻度有著先天觸屏友好型的外觀,方便開發者在其中新增多項功能,可以給使用者審美上的愉悅和真實

App架構設計經驗談:介面設計

安全機制的設計 現在,大部分App的介面都採用RESTful架構,RESTFul最重要的一個設計原則就是,客戶端與伺服器的互動在請求之間是無狀態的,也就是說,當涉及到使用者狀態時,每次請求都要帶上身份驗證資訊。實現上,大部分都採用token的認證方式,一般流程是:

Android/IOS APP介面設計之尺寸規範

1.尺寸以及解析度   iPhone的介面尺寸不用多說,640*960是基本OK的,也可以是適應5S的640*1136,馬上iPhone 6也快來了(隨便吐槽一下網上曝的真機諜照,真是醜到離譜...),只要寬度不變都好說。至於畫素問題,網頁和移動的UI用72px就可以了