spring - java怎么寫一個(gè)接口只讓app調(diào)用?
問題描述
只能在app內(nèi)進(jìn)行調(diào)用,不能在web端調(diào)用。
我好像聽說有這個(gè)東西。我用的是spring mvc框架,不知道怎么實(shí)現(xiàn)這樣的功能。。
問題解答
回答1:只能說做到部分禁止。
在app里調(diào)用之前設(shè)置一個(gè)特殊的User Agent,比如“My own app”,在程序開始檢查瀏覽器發(fā)過來的User Agent,如果不是“My own app”,則直接報(bào)錯(cuò)。
但是如果遇到高手,他們可以任意偽造User Agent,他們只要一攔截你的App和你的服務(wù)器之間的通訊,就能知道你使用了什么樣的User Agent,然后在瀏覽器里偽造一個(gè)跟你要求的一模一樣的字符串就行了。
回答2:獲取當(dāng)前時(shí)間然后加鹽加密,通過url或者ua發(fā)送到服務(wù)器解析,解析出來與服務(wù)器時(shí)間對比,超過1分鐘的都扔掉。這樣別人就算偽造了ua,也只能用1分鐘,然后再去偽造新的ua。
回答3:https客戶端認(rèn)證
回答4:如果使用http接口的話,不妨加一層認(rèn)證邏輯;或者使用非http接口,這樣web端就無法調(diào)用了
回答5:終級方案就是@markov 說得開啟服務(wù)端https的雙向認(rèn)證。簡單點(diǎn),也可以app生成校驗(yàn)碼做為http header傳給服務(wù)器,服務(wù)端拿到校驗(yàn)碼解密后校驗(yàn)。
相關(guān)文章:
1. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf2. mysql - 怎么生成這個(gè)sql表?3. mysql儲存json錯(cuò)誤4. php - 公眾號文章底部的小程序二維碼如何統(tǒng)計(jì)?5. mysql - 表名稱前綴到底有啥用?6. mysql - 數(shù)據(jù)庫表中,兩個(gè)表互為外鍵參考如何解決7. Navicat for mysql 中以json格式儲存的數(shù)據(jù)存在大量反斜杠,如何去除?8. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?9. mysql - 數(shù)據(jù)庫建字段,默認(rèn)值空和empty string有什么區(qū)別 11010. sql語句 - 如何在mysql中批量添加用戶?
