国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

HTTP API 設計入坑指南(二)

JayChen / 1023人閱讀

摘要:而只需要服務端生成,客戶端保存,每次請求在頭部中使用攜帶,服務端認證解析就可。如果緩存不清理,驗證碼就會一直有效,不安全。

一、授權

參考文獻:https://blog.risingstack.com/...

1. Basic authentication (最簡單,適用于沒有第三方的請求接口中)

客戶端發送authorization,內容為 Basic Base64編碼(username:password),用戶名和密碼沒有加密

缺點:每個請求都要帶用戶名和密碼,不安全

2. Cookies

Session:用戶登錄成功,服務端返回一個sessionID,客戶端將其存在cookie中,每次請求都會帶這個sessionID

HTTP Only:(config/session.php中設置)如果是true,JS代碼將無法讀取cookie信息,拿不到document.cookies。從而防止XSS攻擊,增加了cookie的安全性,但即便如此,也不要將重要信息存入cookie

3. Single Key :雙方約定唯一標示 4. Tokens 4.1 JWT:Json Web Token

參考文獻:https://www.jianshu.com/p/af8...;
用戶完成登錄之后,每個請求都會包含JWT,用來驗證用戶身份和訪問權限

構成:

Header頭部包括Token類型和加密算法,并base64加密

Payload負載 存放有效信息,并base64加密

Signature簽名 包括Header、Payload、Secret秘鑰(Secret保存在服務端的,服務端會根據這個密鑰進行生成token和驗證,所以需要保護好)

三部分用.連接,生成完整的token

cookie+session通常是保存在內存中,而且服務從單服務到多服務會面臨的session共享問題,隨著用戶量的增多,開銷就會越大。而JWT只需要服務端生成token,客戶端保存token,每次請求在頭部authorization中使用Bearer攜帶token,服務端認證解析就可。

因為JWT不使用cookie,所以支持跨域

因為json的通用性,所以支持跨語言

4.2 Self-Tokens

根據業務,自己寫生成token的邏輯,注意設定請求次數和過期時間

5. Signatures

API的使用者和提供者擁有同樣的私鑰,才能操作業務

算法如下:
對參數進行字典升序排列,防止順序不同,生成的簽名不同
排序后進行字符串連接
app-secret為后綴,進行加密,再轉大寫

案例:

http://wiki.open.qq.com/wiki/...

https://www.cnblogs.com/dcb36...

https://help.aliyun.com/docum...

https://cloud.tencent.com/doc...

https://docs.gdax.com/#creati...

http://dev.netease.im/docs/pr...

6. One-Time Passwords(OTP)一次性密碼

Time-based One-time Password Algorithm 基于時間
HMAC-based One-time Password Algorithm 基于計數器

感覺QQ安全中心就是這個原理,更多內容參考

https://www.jianshu.com/p/a7b...

http://www.cnblogs.com/voipma...

7. Oauth2

Oauth2相當于第三方,在客戶端和服務端之間多設置了一層,用戶給客戶端授權,客戶端向第三方認證申請token,申請成功后使用token向服務端申請資源

參考文獻:

http://www.ruanyifeng.com/blo...

https://oauth.net/2/

https://helpx.adobe.com/coldf...

二、安全 1. 請求

不信任任何輸入數據
校驗數據格式:len,range,format,type
拒絕無效、非法內容
使用通用校驗類庫,不要自己造輪子
拒絕過大請求數據
記錄失敗次數,黑名單
驗證碼:清理session
登錄時訪問一個腳本文件,用來生成驗證碼,將值保存在Session中,提交時判斷輸入值與session是否一致。如果緩存不清理,驗證碼就會一直有效,不安全。
保存時可以用session::flash,訪問一次之后就會被刪除,解決清理緩存的問題

2. 超范圍讀取數據 =》邏輯錯誤 3. 異常信息 =》敏感信息 4. 頻率

X-RateLimit-Limit
X-RateLimit-Remaining
Retry-After
X-RateLimit-Reset

5. 安全連接(禁止跳過驗證)=》HTTPS

HTTP:最普遍的一種網絡協議,以明文方式發送內容,不適合傳輸一些敏感信息

HTTPS:HTTP的安全版,在HTTP基礎上加了SSL協議,SSL依靠證書驗證服務器身份,為客戶端和服務端的通信加密
作用一:建立數據傳輸的安全通道
作用二:確認網站的真實性
缺點:費用高,速度慢,流量成本大

區別:

HTTPS需要申請證書、

HTTPS數據加密,安全性高、

HTTP端口是80,HTTPS是443

6. 數據RSA加密

支付場景 https://docs.open.alipay.com/...

7. XSS

參考文獻:http://laravelacademy.org/pos...
注入惡意JS代碼,解決方案是用 htmlentities()轉義數據

laravel的blade模板引擎已經幫我們處理好了

{!!$data !!} 會原生輸出HTML,適用于圖片、鏈接
{{ $data  }} 會對數據進行轉義,從而避免XSS攻擊。

如果需要更強大的過濾HTML功能,可以使用HTML Purifier庫

8. SQL注入

注入惡意SQL語句,不僅能get注入、post注入、還能cookie注入或利用PHP注釋打碎關鍵詞重組,解決方案如下:

偽靜態:重寫URL,隱藏傳遞的參數

關鍵詞過濾:阻止惡意參數的輸入,過濾掉敏感關鍵詞和符號,利用正則過濾更好

SQL語言預處理:類似于一種編譯過的要執行的SQL語句模板,它的優點是語句多次執行,只做一次查詢,減少時間,少占用資源,效率高

現代PHP框架很多都采用MVC模式,數據庫的操作都依附于Model,底層已經做好了預防SQL注入

9. CORS 跨域資源共享

我寫的《HTTP API 設計入坑指南 一》里寫跨域的時候提到過

10. CSRF

參考文獻:

https://www.ibm.com/developer...

https://zh.wikipedia.org/wiki...

跨站域請求偽造,通過請求盜取用戶cookie信息,解決策略如下:

驗證HTTP Referer字段:Header里的referer字段用來記錄請求的來源地址,黑客通過自己的網站去請求,地址不合法,拒絕請求。但是有些瀏覽器可以篡改referer值

token驗證:既然黑客盜取了cookie信息,那就以參數形式加入隨機的token,在服務器驗證token

HTTP Header中自定義屬性驗證:和token一樣,只是不放在參數中,而是Header頭里

記得關注我呦

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30740.html

相關文章

  • HTTP API 設計入坑指南

    摘要:而只需要服務端生成,客戶端保存,每次請求在頭部中使用攜帶,服務端認證解析就可。如果緩存不清理,驗證碼就會一直有效,不安全。 一、授權 參考文獻:https://blog.risingstack.com/... 1. Basic authentication (最簡單,適用于沒有第三方的請求接口中) 客戶端發送authorization,內容為 Basic Base64編碼(usern...

    pingan8787 評論0 收藏0
  • HTTP API 設計入坑指南(一)

    一、請求方式 1. 請求方式有get/post/put/delete/options 2. get和post的區別: get通常用作獲取數據,post通常用作提交數據 get參數有長度限制,受限于URL長度(http協議對url長度不限制,而是服務器和瀏覽器的配置參數限制),post無限制 get冪等,post不冪等(冪等:多次請求,結果一樣) header里有個參數content-length...

    jay_tian 評論0 收藏0
  • Java入坑指南

    摘要:入坑指南是滴,下面是一個最低的入坑還應該有種設計模式應該掌握的。堆棧以幀為單位保存線程的狀態,對堆棧的操作為壓棧和出棧執行字節碼以后,將會產生程序計數器和棧,程序計數器存放將要執行下一條指令的偏移量。 Java入坑指南是滴,下面是一個最低的入坑 還應該有23種設計模式應該掌握的。╮(╯▽╰)╭注意,第一個j是大寫。 Java的特點跨平臺,風格接近C++最重要的api文檔 https:/...

    Rindia 評論0 收藏0
  • Browserify簡易入坑指南

    摘要:簡要說明長處在于使用模塊規范,而不是使用的模塊規范,以及使用的模塊規范。簡單使用關于命令行工具使用,請參照官方文檔。相同模塊重復依賴模塊重復依賴很容易理解,模塊實現時可能分割為多個子文件實現,每個子文件內部可能會引用同一個模塊,如。 簡介 browerify: http://browserify.org/index.html browserify可以看做瀏覽器端的又一個模塊...

    vpants 評論0 收藏0
  • FIBOS入坑指南——本地開發環境搭建

    摘要:如果出錯,需要查看一下本地節點是否正在運行,在瀏覽器輸入后記完至此,本地的開發環境基本搭建完成,如果你想試試在本地環境編寫部署調用智能合約,可以參考官方開發文檔,當然,后續有時間,我也會把在智能合約開發過程中踩到的坑寫寫。 FIBOS是什么? FIBOS 是一個結合 FIBJS 以及 EOS 的 JavaScript 的運行平臺,它使得 EOS 提供可編程性,并允許使用 JavaSc...

    goji 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<