web運行時安全

1.輸入驗證?

對傳遞的數據的格式、長度、類型(前端和后端都要)進行校驗。

對黑白名單校驗:比如前端傳遞了一個用戶名,可以搜索該用戶是否在白名單或者黑名單列表。

針對黑名單校驗,比如:

// 手機號驗證碼登錄的時候,需要check一下手機號
async sendAuthCode(phone){if(!_.isString(v))return falseconst phone = phone.replace(/[a-zA-Z]/gi,'')if(phone.length!==11) return falseconst forbidden = ['170','171','165','167']const isR = forbidden.some(item=>phone.startsWith(item))if(isR)return false
}

2.身份認證與授權?

身份認證(屬于node后端責任),核心思想:后端A向第三方服務B端發起請求的時候在請求頭添加一個3個字段:
projectKey,appKey,authorization,

其中前兩個key是A和B商量好的一串碼(比如dfs3290sdf)

authorization是通過給param參數轉成md5,混合一堆content-type,uri之類的配合B提供的密鑰secretKey進行hmac編碼,生成簽名signature。

然后B端根據相反的規則解析這三個字段,與自己手上的projectKey,appKey,secretKey進行對比

上代碼:

//  偽代碼const Authorization = this.getAuthorization('POST', reqParams, this.contentType, this.uri, date, this.secretKey, this.accessKey);const headers = {'Content-Type': this.contentType,'Authorization': Authorization,'projectKey': this.projectKey,'appKey': this.appKey,'Date': date,'X-Forwarded-For': '192.168.42.94'}const options = {method: 'POST',headers};
const res = await this.Fetch(url, options, param);getAuthorization(method, params, contentType, uri, date, secretKey, accessKey): string {const md5 = this.getContentMD5(params);const constToSign = method + '\n' + md5 + '\n' + contentType + '\n' + date + '\n' + uri;// 將constToSign施行utf-8轉換const utf8Data = Buffer.from(constToSign, 'utf8');// 使用HMAC-SHA1和密鑰進行編碼const hmac = crypto.createHmac('sha1', secretKey);hmac.update(utf8Data);const encodedData = hmac.digest();// 使用Base64進行最后的編碼const signature = encodedData.toString('base64');return `${accessKey}:${signature}`;}getContentMD5(params) {let contentMD5 = '';const jsonString = qs.stringify(params);contentMD5 = crypto.createHash('md5').update(jsonString).digest('base64')return contentMD5;
}

3.安全配置?

4.錯誤處理與日志記錄?

5.加密和解密?

6.輸入過濾?

7.限制訪問?

8.應用程序安全更新?

9.規范編碼?

10.安全審計?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714076.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714076.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714076.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

讓兩個電腦通信的方法(TCP連接,UDP連接,C/S架構)

目錄 TCP-面向連接UDP-面向無連接C/S架構服務器和客戶端的工作過程C/S架構例子 讓兩個電腦通信的方法是 在C/S的基礎上,采用TCP和UDP的方式連接 TCP-面向連接 UDP-面向無連接 C/S架構 服務器和客戶端的工作過程 C/S架構例子 服務器與客戶端通信的過程類似公司與客戶…

微信小程序云開發教程——墨刀原型工具入門(添加交互事件)

引言 作為一個小白,小北要怎么在短時間內快速學會微信小程序原型設計? “時間緊,任務重”,這意味著學習時必須把握微信小程序原型設計中的重點、難點,而非面面俱到。 要在短時間內理解、掌握一個工具的使用&#xf…

殿堂級Flink源碼極精課程預售

一、為什么我們要讀源碼? 1、讓個人技術快速成長: 優秀的開源框架,底層的源碼設計思想也非常優秀,同時還有含有大量的設計模式和并發編程技術,優秀的解決方案,熟讀源碼對猿們技術提升有很大幫助 2、新技術學習能力: Java開源碼框架的源碼熟讀后,若出現…

第一篇:參考資料地址

javaGuide JavaGuide(Java學習&面試指南) | JavaGuide 清華學生總結的 小林coding labuladong labuladong 的算法筆記 | labuladong 的算法筆記 【華仔說技術】kafka的系列文章 https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg3MTcxMDgxNA…

【Datawhale組隊學習:Sora原理與技術實戰】Sora技術原理

Sora能力邊界探索 最大支持60秒高清視頻生成,以及基于已有短視頻的前后擴展,同時保持人物/場景的高度一致性如奶茶般絲滑過渡的視頻融合能力同一場景的多角度/鏡頭的生成能力具有動態攝像機運動的視頻。隨著攝像機的移動和旋轉,人和其 他場景…

x-pack的破解方式和免費jar包!!可直接用!!

原理介紹 我們平時為es安裝x-pack組件,用elasticsearch-plugin install x-pack ,安裝成功后。 1.cd $es目錄/pulgins/x-pack 里面有一個x-pack-5.6.2.jar ,將jar包反編譯,然后將里面的licence的程序改下。再編譯成jar包。 2…

通過筆記本橋接打印機組成網絡打印機其它電腦與之相連各種問題匯總

根據描述需要一臺低配閑置筆記本(有無線網卡),一臺普通臺式打印機(不帶WIFI)就可以組成網絡打印機,能省1000塊不? 1. 讓筆記本安裝驅動使其可以打印。 2. 讓筆記本上的打印機共享,…

解決 MacOS Sonoma 14 系統下修改用戶名無法進入系統的歷史Bug

蘋果系統祖傳Bug概述 在MacOS中如果在系統偏好設置/用戶和群組中嘗試修改用戶名或用戶ID,當且僅當只有一個管理員賬號的時候重啟,就可能面臨到無法進入操作系統,即使出現了登錄框,但是一直是 loading狀態在這個期間,你…

javaScript 深淺拷貝

javaScript深淺拷貝 淺拷貝 自己創建一個新的對象,來接受你要重新復制或引用的對象值。如果對象屬性是基本的數據類型,復制的就是基本類型的值給新對象,但如果屬性是引用數據類型,復制的就是內存中的地址,如果其中一個…

Python 編程中的迭代器、生成器和裝飾器探究【第110篇—迭代器】

Python 編程中的迭代器、生成器和裝飾器探究 在Python編程中,迭代器(Iterators)、生成器(Generators)和裝飾器(Decorators)是三個強大的概念,它們為代碼的可讀性、效率和靈活性提供…

PaddleOCR的部署教程(實操環境安裝、數據集制作、實際應用案例)

文章目錄 前言 PaddleOCR簡介 一、PaddleOCR環境搭建 因為我之前安裝過cuda和cudnn,查看cuda的版本根據你版本安裝合適的paddlepaddle版本(之前沒有安裝過cuda的可以看我這篇文章Ubuntu20.04配置深度學習環境yolov5最簡流程) 1.創建一個…

【C++從0到王者】第四十八站:最短路徑

文章目錄 一、最短路徑二、單源最短路徑 -- Dijkstra算法1.單源最短路徑問題2.算法思想3.代碼實現4.負權值帶來的問題 三、單源最短路徑 -- Bellman-Ford算法1.算法思想2.算法實現3.SPFA優化4.負權回路 四、多源最短路徑 -- Floyd-Warshall算法1.算法思想2.算法實現 一、最短路…

antd vue 日期控件的使用(選年份)

Ant Design Vue-------DatePicker 今天就講講Ant Design Vue下的控件----DatePicker 日期選擇框 結合項目中的需求,先講一下選擇年份如何使用,需求: (1)將庫中存的年份讀出到DatePicker控件里面; &…

Windows 10上安裝Docker

在Windows 10上安裝Docker需要使用Docker Desktop for Windows,這是一個完全包含Docker工具和Docker Engine的應用程序,讓你可以在Windows環境中運行容器化應用程序。以下是安裝Docker Desktop for Windows的步驟: 系統要求檢查: …

推薦收藏!字節AI Lab-NLP算法(含大模型)面經總結!

節前,我們組織了一場算法崗技術&面試討論會,邀請了一些互聯網大廠同學、參加社招和校招面試的同學,針對大模型技術趨勢、大模型落地項目經驗分享、新手如何入門算法崗、該如何備戰、面試常考點分享等熱門話題進行了深入的討論。 今天整理…

Python調用ChatGPT API使用國內中轉key 修改接口教程

大家好,我是淘小白~ 有的客戶使用4.0的apikey ,直接使用官方直連的apikey消費很高,有一位客戶一個月要消費2萬,想使用4.0中轉的apikey,使用中轉的apikey 需要修改官方的openai庫,下面具體說下。 1、首先確保安裝的op…

Java ElasticSearch-Linux面試題

Java ElasticSearch-Linux面試題 前言1、守護線程的作用?2、鏈路追蹤Skywalking用過嗎?3、你對G1收集器了解嗎?4、你們項目用的什么垃圾收集器?5、內存溢出和內存泄露的區別?6、什么是Spring Cloud Bus?7、…

安裝ProxySQL,教程及安裝鏈接(網盤自提)

一、網盤下載,本地直傳 我網盤分享的是proxysql-2.5.5-1-centos8.x86_64.rpm,yum或者dnf直接安裝就行 提取碼:rhelhttps://pan.baidu.com/s/1nmx8-h8JEhrxQE3jsB7YQw 官方安裝地址 官網下載地址https://repo.proxysql.com/ProxySQL/ 二、…

題解:CF1889C1-Doremy‘s Drying Plan (Easy Version)

題解:CF1889C1-Doremy’s Drying Plan (Easy Version) 一、 題意描述 1. 題目鏈接 (1) CF鏈接 CodeForces (2) 洛谷鏈接 洛谷 2. 題目翻譯 有一個長度為 n n n 的序列,上面有 n n n 個點&#xf…

快速搭建項目運行環境(JDK+Maven+Git+Docker+Mysql+Redis+Node.js+Nginx)+前后端項目分別部署

JDK ①、從oracle官方網站上下載1.8版本中的最新版的JDK https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html ②、把文件通過WinSCP或者XFTP上傳到服務器上 ③、解壓和配置環境變量 #進入安裝包目錄,解壓 cd /data/tmp tar -zxvf jdk-8…