鍍金池/ 問答/Java  PHP  HTML/ 前后端分離 api安全設(shè)計

前后端分離 api安全設(shè)計

最近打算做個商城項目(個人學(xué)習(xí)練手),想采用前后端分離的方式來實現(xiàn),但是api認(rèn)證這塊經(jīng)驗不足。網(wǎng)上看過jwt有關(guān)的帖子,但是一直不明白。

1.jwt相比隨機(jī)生成一個字符串(也是有時限的)有什么優(yōu)勢?第一部分header內(nèi)容居然包含了加密的算法,這不是更加不安全么?

2.jwt應(yīng)該是登陸后生成的一個token, 但是在不登錄的情況下,部分接口也是可以請求的啊,比如商品展示之類。那基礎(chǔ)的api認(rèn)證應(yīng)該怎么做呢?

回答
編輯回答
硬扛
  1. 加密私鑰放你服務(wù)器側(cè),如果沒有泄漏有什么不安全
  2. 這個也可以用中間件來處理需要身份信息的api
2017年1月13日 17:19
編輯回答
醉淸風(fēng)

1.jwt加密規(guī)則更復(fù)雜,你隨機(jī)生成字符串直接傳入客戶端,不是直接被獲取到了?jwt的header沒有加密,只是進(jìn)行了base64,不會存入敏感信息,本就是透明的
2.需要驗證身份信息的API就引入驗證信息中間件 或 繼承基類嘛

2017年10月4日 00:31
編輯回答
舊酒館

1、如果隨機(jī)生成的字符串也能滿足你的要求,那也是可以的,jwt 更多的是提供一種規(guī)范或者標(biāo)準(zhǔn),最終的目的都是實現(xiàn)業(yè)務(wù)需求。對于 header 是否包含加密算法完全是由你來決定的,而且如果你的算法加了鹽的話,只知道算法不知道鹽值也是沒用的。
2、認(rèn)證完全是后端的事情,需要認(rèn)證的接口才做token認(rèn)證,都不需要認(rèn)證了你還想認(rèn)證啥?

2017年12月29日 02:07
編輯回答
命于你

什么是 JWT -- JSON WEB TOKEN

1.JWT本身是web認(rèn)證的一種方式,如果隨機(jī)字符串可以滿足你的業(yè)務(wù)需要那也可以。JWT是一種規(guī)范、標(biāo)準(zhǔn),如何生成這個JWT是可以自己決定的,但根據(jù)JWT的定義,JWT并不適合放置敏感信息,JWT的生產(chǎn)是在后端的,后端保留生成用到的秘鑰
2.接口的認(rèn)證是后端自己定義的,后端要維護(hù)接口-登錄驗證關(guān)系和接口權(quán)限,對免登錄的接口不做登錄驗證就好了

Ps:HTTP是可以模擬的,沒有絕對的安全,即時使用JWT或其他驗證方式都有被盜用的風(fēng)險,我們只能提高服務(wù)的安全性,比如使用Https、ip校驗、user-agent校驗、referer校驗等。

2017年10月1日 15:54
編輯回答
奧特蛋

可以用passport中間件,原理是一樣的,只是封裝了一下而已

2018年2月22日 06:21