簡易身份校驗機制

2021-09-25 20:12:54 字數 1648 閱讀 8349

這個乙個簡易的介面使用者身份校驗機制

優點:1, 用當前時間加鹽, 防止重放攻擊

2, 每次介面呼叫都可以知道是哪個使用者請求的

3, 伺服器不用管理session

缺點:2, 如果客戶端的時間有問題,或者與伺服器不在同乙個時區,將無法呼叫伺服器

獲取authorization引數的c#演算法:

/**

* a,將使用者名稱,當前時間,使用者密碼分別用base64secureurl加密, 再用點號拼接成乙個字串,

* 類似這樣的格式: base64(usercode).base64(yyyymmddhhmmss).base64(password),

* 然後把這個字串用md5加密得到32位密文

* b,使用者名稱,當前時間,md5密文分別用base64secureurl加密, 再用點號拼接成乙個字串token,

* 類似這樣的格式: base64(usercode).base64(yyyymmddhhmmss).base64(md5)

* c,然後把b步驟得到的字串token作為header引數authorization引數值

* 檢驗說明: 當前時間(yyyymmddhhmmss)應該準確,如果跟當前時間相差30分鐘將返回授權失敗

* 伺服器校驗方法: 得到token後反編碼得到使用者名稱和時間,並查詢資料庫得到密碼,按照步驟a,得到md5與token內的一致表示身份認證成功

* 服務端token校驗規則

* 1, token是否正確: 校驗密碼

* 2, token是否有效: 當前時間前後24小時內(防止時區差異)

* 3, 同一token使用次數不能超過5次: 防止token被攔截後重複使用

*/public static string createtoken(string usercode, string userpassword)

/// /// 字串編碼為base64url

///

/// 待編碼的文字字串

/// 編碼的文字字串.

public static string base64urlencode(string text)

/// /// 解碼安全的url文字字串的base64

///

/// base64編碼字串安全的url.

/// cadena de texto decodificada.

public static string base64urldecode(string secureurlbase64)

var bytes = convert.frombase64string(secureurlbase64);

return encoding.utf8.getstring(bytes);

}/// /// 此**示例通過建立雜湊字串適用於任何 md5 雜湊函式 (在任何平台) 上建立 32 個字元的十六進製制格式雜湊字串

/// 官網案例改編

///

///

///

public static string get32md5one(string source)

string hash = sbuilder.tostring();

return hash.toupper();

}}

身份證校驗

int isright string card cout 9 wi sum 11 if p 17 x p 17 x 最後一位為 x 或 x else if id wi p 17 判斷計算出的身份證校驗碼與輸入是否相符 return error 判斷身份證號碼中的年月日是否正確 bool birthd...

身份證校驗

const regexutils else 手機號碼格式驗證 checkmobile mobile string boolean return regex.test mobile.trim else 郵箱格式驗證 checkemail email string boolean result rege...

CSRF校驗機制

表單提交 需要做的事情 1.在cookie中設定csrf token 沒有 而是sessionid 鑰匙,裡面session空間中儲存的是未加密的csrf token 伺服器完成 2.在表單中設定隱藏的csrf token 手動設定 校驗流程 1.通過sessionid取出伺服器內部未加密的csrf...