前端的安全隱患之API惡意調用

永遠不要相信前端傳來的數據,對于資深開發者而言,這幾乎是一種本能,無需過多解釋。然而,初入職場的開發新手可能會感到困惑:為何要對前端傳來的數據持有如此不信任的態度?難道人與人之間連基本的信任都不存在了嗎?

API惡意調用
?

這種“惡意調用”是實現 SQL 注入攻擊的一種常見途徑,它展示了攻擊者如何通過 URL 參數發起攻擊。

再來看一個例子,假設有一個用戶信息查詢接口,前端會發送一個用戶 ID 到后端,后端根據用戶 ID 查詢用戶信息并返回。后端代碼如下(未采用防御式編程):

from flask import Flask, request, jsonify i
mport sqlite3  app = Flask(__name__)  @app.route('/user', methods=['GET']) 
def get_user():     user_id = request.args.get('id')     conn = sqlite3.connect('example.db')     cursor = conn.cursor()     query = f"SELECT * FROM users WHERE id={user_id}"     cursor.execute(query)     result = cursor.fetchone()     conn.close()     if result:         return jsonify(result)     else:         return jsonify({"error": "User not found"}), 404  
if __name__ == '__main__':     app.run(debug=True)

在這個例子中,后端代碼直接將用戶輸入的 user_id 拼接到 SQL 查詢語句中,沒有進行任何校驗或處理。這使得該接口容易受到 SQL 注入攻擊。

惡意調用示例:假設攻擊者通過瀏覽器或其他工具向該接口發送以下請求:

GET /user?id=1 OR 1=1

生成的 SQL 查詢語句將是:

SELECT * FROM users WHERE id=1 OR 1=1

由于 1=1 永遠為真,這條查詢語句會返回所有用戶的信息,而不是只返回 ID 為 1 的用戶信息。攻擊者可以利用這種方式獲取數據庫中所有用戶的信息,造成嚴重的安全問題。

由此可見,前端傳來的數據并非絕對可靠。對于后端來說,這些數據就像未經篩選的原材料,其中可能夾雜著各種風險。因此,后端必須對前端傳來的數據進行二次校驗,這正是防御式編程的核心思想。

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

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

相關文章

基于 Spark 實現 COS 海量數據處理

上周在組內分享了一下這個主題, 我覺得還是摘出一部分當文章輸出出來 分享主要包括三個方面: 1. 項目背景 2.Spark 原理 3. Spark 實戰 項目背景 主要是將海量日志進行多維度處理; 項目難點 1、數據量大(壓縮包數量 6TB,60 億條數…

Unity3D 屏幕點擊特效

實現點擊屏幕任意位置播放點擊特效。 屏幕點擊特效 需求 現有一個需求,點擊屏幕任意位置,播放一個點擊特效。 美術已經做好了特效,效果如圖: 特效容器 首先,畫布是 Camera 模式,畫布底下有一個 UIClic…

MCU編程

MCU 編程基礎:概念、架構與實踐 一、什么是 MCU 編程? MCU(Microcontroller Unit,微控制器) 是將 CPU、內存、外設(如 GPIO、UART、ADC)集成在單一芯片上的小型計算機系統。MCU 編程即針對這些…

Go語言--語法基礎6--基本數據類型--數組類型(1)

Go 語言提供了數組類型的數據結構。 數組是具有相同唯一類型的一組已編號且長度固定的數據項序列,這種類型可以是任意的 原始類型例如整型、字符串或者自定義類型。相對于去聲明number0,number1, ..., and number99 的變量,使用數組形式 numbers[0], …

左神算法之給定一個數組arr,返回其中的數值的差值等于k的子數組有多少個

目錄 1. 題目2. 解釋3. 思路4. 代碼5. 總結 1. 題目 給定一個數組arr,返回其中的數值的差值等于k的子數組有多少個 2. 解釋 略 3. 思路 直接用hashSet進行存儲,查這個值加上k后的值是否在數組中 4. 代碼 public class Problem01_SubvalueEqualk {…

自回歸(AR)與掩碼(MLM)的核心區別:續寫還是補全?

自回歸(AR)與掩碼(MLM)的核心區別:用例子秒懂 一、核心機制對比:像“續寫”還是“完形填空”? 維度自回歸(Autoregressive)掩碼語言模型(Masked LM)核心目標根據已生成的token,預測下一個token(順序生成)預測句子中被“掩碼”的token(補全缺失信息)輸入輸出輸入…

后端開發兩個月實習總結

前言 本人目前在一家小公司后端開發實習差不多兩個月了,現在準備離職了,就這兩個月的實習經歷寫下這篇文章,既是對自己實習的一個總結,也是給正在找實習的小伙伴以及未來即將進入到后端開發這個行業的同學的分享一下經驗。 一、個…

Python基礎(??FAISS?和??Chroma?)

??1. 索引與查詢性能? ??指標????FAISS????Chroma????分析????索引構建速度??72.4秒(5551個文本塊)91.59秒(相同數據集)FAISS的底層優化(如PQ量化)加速索引構建,適合批…

Windows下memcpy_s如何在Linux下使用

Windows下代碼如下 memcpy_s(pLine->ppBuf[i], m_ColorLineByte, pIn nOffset, m_ColorLineByte); 方案 1:使用標準 memcpy 手動檢查(最通用) // 檢查參數有效性 if (pLine->ppBuf[i] nullptr || pIn nullptr || m_ColorLi…

2025年數學算法與自動化控制國際會議(ICMAAC 2025)

2025年數學算法與自動化控制國際會議(ICMAAC 2025) 2025 International Conference on Mathematical Algorithms and Automation Control 一、大會信息 會議簡稱:ICMAAC 2025 大會地點:中國長沙 審稿通知:投稿后2-3日…

C語言數組介紹 -- 一維數組和二維數組的創建、初始化、下標、遍歷、存儲,C99 變長數組

目錄 1. 一維數組 1.1 數組的概念 1.2 一維數組的創建 1.3 一維數組的初始化 1.4 數組的類型 1.5 數組下標 1.5.1 數組元素的遍歷 1.5.2 數組的輸入 1.6 一維數組在內存中的存儲 1.7 sizeof 計算數組元素個數 2. 二維數組 2.1 二維數組的創建 2.2 二維數組的初始…

SpringAI + DeepSeek大模型應用開發 - 進階篇(上)

三、SpringAI 2. 哄哄模擬器 2.1 提示詞工程 提示詞工程(Prompt Engineering):通過優化提示詞,使大模型生成盡可能理想的內容,這一過程就叫提示詞工程。 (1)清晰明確的指令 談談人工智能 …

Spring Boot實現異常處理

Spring Boot 提供了多種靈活的方式實現異常處理,以下是核心方案和最佳實踐: 一、基礎異常處理方案 1. ControllerAdvice ExceptionHandler(全局處理) ControllerAdvice public class GlobalExceptionHandler {// 處理特定異常&…

【目標檢測】IOU的概念與Python實例解析

🧑 博主簡介:曾任某智慧城市類企業算法總監,目前在美國市場的物流公司從事高級算法工程師一職,深耕人工智能領域,精通python數據挖掘、可視化、機器學習等,發表過AI相關的專利并多次在AI類比賽中獲獎。CSDN…

Vue2中如何使用vue-print-nb打印功能

插件官網地址&#xff1a;vue-print-nb - npm 1.安裝 npm install vue-print-nb --save 2.導入打印插件 //main.js import Print from vue-print-nb Vue.use(Print); 3.配置參數 4.頁面使用 <div id"printDiv">打印內容</div><el-button v-print&…

Matplotlib快速入門

目錄 基本使用 解決中文亂碼 一個坐標系繪制多個圖像 多個坐標系繪制 基本使用 什么是Matplotlib 是專門用于開發2D圖表(包括3D圖表)以漸進&#xff0c;交互式方式實現數據可視化 為什么要學習matplotlib 可視化是在整個數據挖掘的關鍵輔助工具&#xff0c;可以清晰的理解…

扣料不允許‘貨物移動’

遇到了報錯&#xff0c;不允許貨物移動 以為又是和之前一樣是訂單已經關閉&#xff0c;看是領錯料還是財務誤關的原因&#xff0c;但是co03一看訂單狀態并沒有關閉 原因就是這個CRTD 訂單只是創建了&#xff0c;但是沒有下達 找個正常的看看&#xff1a; 一般訂單創建和下達都…

【AI】全新AI測試系列之二--------AI自動化測試,提高測試效率

目錄 一、自動化測試 1、與手動測試對比 2、自動化測試流程 二、自動化測試環境搭建 三、web自動化使用AI的兩種方式 1、利用DeepSeek快速生成腳本 2、pycharm集成通義靈碼 四、通義靈碼實戰 1、使用提示詞生成代碼 2、使用pytest框架 前言&#xff1a;上一章節只要是…

npm包沖突install失敗

--legacy-peer-deps是npm&#xff08;Node.js包管理器&#xff09;的一個命令行選項&#xff0c;主要用于解決依賴沖突問題。當安裝依賴時&#xff0c;npm默認會嚴格檢查peer dependencies&#xff08;對等依賴&#xff09;的版本兼容性&#xff0c;可能導致安裝失敗。啟用此選…

68、數據訪問-crud實驗-刪除用戶完成

68、數據訪問-crud實驗-刪除用戶完成 以下是完成“數據訪問-CRUD實驗-刪除用戶”功能的一般步驟&#xff0c;以常見Web應用框架&#xff08;如Spring Boot MyBatis-Plus、Django、Ruby on Rails&#xff09;為例&#xff1a; #### 準備工作 - **數據庫表設計**&#xff1a;確…