寫一個Login介面,可以傳帳號和密碼進行登錄
密碼在真實專案中,是進行了一次MD5加密的。
而使用Swagger的介面,密碼直接明文傳輸了,如何進行一次MD5加密(不需要密鑰,直接加密)
NetCore3.1+Swagger5.4.1
uj5u.com熱心網友回復:
本地客戶端將密碼加密,然后傳過去。服務器那邊本身就用加密過的字串進行對比即可
uj5u.com熱心網友回復:
抱歉,沒有理解本地客戶端加密后傳輸是什么意思。
我實際的業務場景,是:
后端:asp.net core api
前端:vue+element
前端在登錄的時候,已經對密碼進行了一次無key加密,然后通過API傳到后端。
這個前端,是你說的本地客戶端的意思么?
現在介面通過Swagger呼叫,Swagger就等同于vue前端。
那么我登錄的時候,Swagger理論上,也要同樣對密碼進行一次無key加密,然后通過同樣的api介面傳到后端。
現在就卡到這里,Swagger傳到API的密碼是明文的。
而我不想在api里面進行MD5加密
1、不想在后端做這個本該前端完成的一步(無Key加密),前端該做的事情不想移到后端。
2、后端有后端要做的加密(另一個帶隨機Key的二次加密),這個和本問題無關。
那么,前端(Swagger)應該怎么加密呢。
uj5u.com熱心網友回復:
建議你就不要折騰Swagger了。測驗的時候,用在線工具(或自己寫一個工具)先把密碼做MD5,再把MD5結果填入Swagger測驗頁面。
uj5u.com熱心網友回復:
嗯,找不到辦法,只能這么做了
uj5u.com熱心網友回復:
密碼應該原文傳輸,而不是md5,都是服務器端做hash的。你的設計本身就很奇怪。uj5u.com熱心網友回復:
swagger的前臺不是自己可以隨便寫js嗎? 你給密碼設定一個固定的選擇器.然后設定全域的beforesend里 把文本框的值 改成md5(文本框)不就完了嗎
uj5u.com熱心網友回復:
額,swagger只是一個測驗+檔案工具。你讓他幫你代替登錄介面,密碼要md5,是不是過分了?
uj5u.com熱心網友回復:
所有登錄、密碼驗證的場景,密碼(指紋、人臉、驗證碼)等關鍵資訊是不能使用明文傳輸的,否則屬于嚴重的設計錯誤。正常設計方法為:將關鍵資訊進行加密(或散列出 Hash),傳輸到服務器上解密(或散列服務器上的明文 Hash),然后與服務器上的資訊對比。uj5u.com熱心網友回復:
只是簡單的無密鑰加密,從controller開始,就不想知道用戶的明碼是什么,大概是這個意思。
uj5u.com熱心網友回復:
唉,我還希望它能更豐富一點呢,比如Postman的Pre-request Script,那就更方便了。
uj5u.com熱心網友回復:
額。。。沒試過給swagger頁面寫js代碼,還能這么搞。。明天正好研究一下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12978.html
標籤:C#
上一篇:Quartz中的JobDataMap如何添加自定義物件?
下一篇:CLR專案如果讀取C++ 的指標
