XSS跨站腳本攻擊漏洞(Cross Site Scripting)

前提概要

本文章主要用于分享XSS跨站腳本攻擊漏洞基礎學習,以下是對XSS跨站腳本攻擊漏洞的一些個人解析,請大家結合參考其他文章中的相關信息進行歸納和補充。


XSS跨站腳本攻擊漏洞描述

????????跨站腳本攻擊(XSS)漏洞是一種常見且危害較大的網絡安全隱患。它產生的根源主要在于網站對用戶輸入的驗證不足,以及輸出處理不當,使得攻擊者有機可乘。

????????當存在此類漏洞時,攻擊者能夠將惡意腳本注入目標網站。攻擊類型多樣,反射型 XSS 攻擊者構建含惡意腳本的 URL,誘使用戶點擊,服務器響應后腳本在用戶瀏覽器執行;存儲型 XSS 則是攻擊者將惡意腳本存入服務器,眾多訪問相關頁面的用戶都會因服務器返回的惡意內容而遭受攻擊;DOM 型 XSS 通過篡改頁面 DOM 樹注入腳本。這些惡意腳本一旦在用戶瀏覽器中執行,可能導致用戶信息泄露,如登錄憑證被盜取,或是網站被惡意篡改,嚴重威脅用戶隱私與網站安全 。

XSS跨站腳本攻擊漏洞原理

XSS 跨站腳本攻擊漏洞的原理是攻擊者利用網站對用戶輸入或輸出處理不當的漏洞,將惡意腳本注入到目標網站中。當用戶訪問該網站時,瀏覽器會誤認為這些惡意腳本是合法的,從而執行它們,導致用戶的信息泄露、權限被濫用或其他惡意行為發生。根據注入方式和執行機制的不同,XSS 攻擊主要分為以下三種類型:

?
  • 反射型 XSS:攻擊者構造包含惡意腳本的 URL,誘使用戶點擊。服務器接收并處理該請求時,將用戶輸入的惡意腳本反射到響應頁面中,返回給用戶瀏覽器。瀏覽器解析頁面時執行惡意腳本,從而實現攻擊。這種攻擊通常是一次性的,依賴用戶主動點擊惡意鏈接。
  • 存儲型 XSS:攻擊者將惡意腳本提交到目標網站的數據庫或其他存儲介質中,例如通過留言板、評論區等功能。當其他用戶訪問包含該惡意腳本的頁面時,服務器從存儲介質中讀取并將惡意腳本發送給用戶瀏覽器,瀏覽器執行腳本,導致攻擊發生。存儲型 XSS 攻擊的影響范圍更廣,因為只要有用戶訪問相關頁面,就可能受到攻擊。
  • DOM 型 XSS:攻擊者通過修改頁面的 DOM 結構來注入惡意腳本。這種攻擊主要發生在客戶端,利用瀏覽器中 DOM 操作的漏洞,當用戶與頁面進行交互時,惡意腳本被執行。例如,攻擊者通過修改 URL 參數或其他方式,改變頁面中某些元素的屬性或內容,從而注入并執行惡意腳本。與前兩種類型不同,DOM 型 XSS 攻擊不依賴服務器端的響應,完全在客戶端的瀏覽器環境中進行。

XSS跨站腳本攻擊漏洞場景

  1. URL 參數處理處:服務器或客戶端對 URL 參數驗證過濾不足,引發反射型 XSS。
  2. 表單輸入模塊:各類表單元素輸入處理不當,易出現反射型或存儲型 XSS。
  3. 搜索框功能區:搜索結果頁面直接嵌入用戶輸入,產生反射型 XSS。
  4. 評論與留言系統:存儲和展示環節未嚴格過濾,是存儲型 XSS 溫床。
  5. 用戶資料修改處:對輸入驗證不充分,導致存儲型 XSS。
  6. 富文本編輯器:輸入過濾及內容處理不當,引發 XSS 漏洞。
  7. JSONP 回調處理:回調函數名驗證缺陷,造成基于 JSONP 的 XSS。
  8. 動態 HTML 模板引擎:渲染時對數據轉義過濾不足致 XSS。
  9. 瀏覽器本地存儲操作:存讀數據缺安全處理,引發 XSS。
  10. 日志記錄與展示:日志未過濾惡意輸入,查看時觸發 XSS 。

XSS跨站腳本攻擊漏洞危害

XSS 跨站腳本攻擊漏洞可能導致多方面的危害,主要包括以下幾點:

  • 用戶信息泄露:攻擊者可通過惡意腳本竊取用戶的敏感信息,如登錄憑證、賬號密碼、個人資料、聯系方式等。這些信息一旦落入攻擊者手中,可能會被用于盜刷用戶賬戶資金、冒充用戶身份進行網絡詐騙、販賣個人信息等違法活動,給用戶帶來嚴重的經濟損失和隱私侵犯。
  • 網站被篡改:攻擊者利用 XSS 漏洞注入惡意腳本,能夠對網站頁面進行篡改。他們可能會修改網站的內容,替換正常的頁面元素,插入虛假廣告、惡意鏈接或其他有害信息,影響網站的正常運營和形象,降低用戶對網站的信任度,同時也可能誤導用戶進行一些危險操作。
  • 發起釣魚攻擊:通過 XSS 攻擊,攻擊者可以在目標網站上創建虛假的登錄頁面或其他欺騙性界面,誘使用戶輸入敏感信息。由于這些頁面看起來與真實的網站頁面非常相似,用戶很難察覺其中的差異,從而容易上當受騙,進一步導致個人信息和資金的損失。
  • 傳播惡意軟件:惡意腳本還可以用來傳播惡意軟件,如病毒、木馬等。當用戶訪問被攻擊的網站時,瀏覽器執行惡意腳本,自動下載并安裝惡意軟件到用戶的設備上,從而控制用戶設備,竊取設備中的數據,或者利用用戶設備作為跳板進一步攻擊其他網絡設備。
  • 實施 DDoS 攻擊:攻擊者可以利用 XSS 漏洞控制大量用戶的瀏覽器,組成僵尸網絡,然后向目標服務器發送大量請求,從而導致服務器癱瘓,無法正常提供服務,即分布式拒絕服務(DDoS)攻擊。這種攻擊不僅會影響網站的正常運行,還可能給網站所有者帶來巨大的經濟損失和業務影響。

XSS跨站腳本攻擊漏洞評級

XSS 跨站腳本攻擊漏洞評級主要分四級。嚴重級能讓攻擊者完全掌控用戶瀏覽器,竊取關鍵敏感信息或冒用用戶身份執行核心操作。高危級可使攻擊者獲取大量敏感數據,嚴重破壞網站核心功能。中危級可被用于篡改頁面、展示誤導信息等惡意行為,但影響相對有限。低危級利用條件苛刻,僅產生輕微視覺干擾或對用戶體驗有極小影響,基本不威脅用戶數據與網站安全 。

XSS跨站腳本攻擊漏洞形式

  • 反射型 XSS:也稱為非持久型 XSS。攻擊者構造包含惡意腳本的 URL,誘使用戶點擊。服務器接收請求后,將惡意腳本反射給用戶瀏覽器執行。這種攻擊通常是一次性的,腳本不會存儲在服務器上(存儲在url),如攻擊者通過電子郵件發送包含惡意腳本的鏈接,用戶點擊后觸發攻擊。
  • 存儲型 XSS:又稱持久型 XSS。攻擊者將惡意腳本存入服務器,如在論壇發帖、評論等位置輸入惡意代碼。當其他用戶訪問相關頁面時,服務器會將惡意腳本發送給用戶瀏覽器執行。這種攻擊影響范圍廣,只要訪問該頁面的用戶都會受到攻擊。
  • DOM 型 XSS:通過修改頁面的 DOM 樹來注入惡意腳本。攻擊者利用瀏覽器端腳本對 DOM 操作的漏洞,在用戶瀏覽器本地修改頁面結構,插入并執行惡意腳本,不涉及服務器端的數據處理。例如,通過修改 URL 參數導致頁面 DOM 被惡意修改,進而執行腳本。

按攻擊目標分類

  • 針對用戶的 XSS 攻擊:主要目的是竊取用戶的敏感信息,如登錄憑證、個人資料等,或者以用戶的身份在網站上執行操作。攻擊者通過注入惡意腳本,獲取用戶在瀏覽器中輸入的信息,然后將這些信息發送到自己的服務器。
  • 針對網站的 XSS 攻擊:旨在破壞網站的正常運行,篡改網站的內容,影響網站的聲譽和可用性。例如,攻擊者可能會利用 XSS 漏洞在網站頁面上插入大量廣告、惡意鏈接或破壞頁面的布局,使網站無法正常展示給用戶。

按攻擊載體分類

  • 基于 HTML 的 XSS 攻擊:攻擊者利用 HTML 標簽和屬性的特性,注入惡意腳本。例如,通過在<img>標簽的src屬性中插入惡意腳本,當瀏覽器加載該圖片時,就會執行腳本。
  • 基于 JavaScript 的 XSS 攻擊:直接注入 JavaScript 代碼,利用瀏覽器對 JavaScript 的執行機制來實現攻擊。這是最常見的 XSS 攻擊方式,因為 JavaScript 可以直接操作瀏覽器的 DOM、發送網絡請求等,具有很強的攻擊性。
  • 基于 CSS 的 XSS 攻擊:雖然 CSS 本身不能直接執行代碼,但攻擊者可以利用 CSS 的一些特性,如@import規則、url()函數等,來加載惡意的 CSS 文件或執行一些間接的攻擊行為,例如通過 CSS 樣式改變頁面的布局,誤導用戶進行一些操作。

按傳播途徑分類

  • 主動式 XSS 攻擊:攻擊者通過直接發送惡意鏈接或利用社會工程學手段,誘使用戶主動訪問包含惡意腳本的頁面。例如,通過電子郵件、即時通訊工具等發送釣魚鏈接,用戶點擊后就會觸發攻擊。
  • 被動式 XSS 攻擊:攻擊者將惡意腳本隱藏在正常的網站內容中,等待用戶訪問該網站時自動觸發攻擊。這種攻擊方式通常利用網站的漏洞,將惡意腳本注入到網站的頁面中,用戶在瀏覽網站時不知不覺地受到攻擊。

XSS跨站腳本攻擊漏洞驗證

portswigger靶場

1.

?

?

?

?

2.

?

?

?

?

3.

?

?

?

?

4.

?

?

<img src=1 onerror=alert(1)>

在這段代碼中:
????????<img>是 HTML 中的圖像標簽,用于在網頁上顯示圖片。
????????src是<img>標簽的一個屬性,它指定了要加載的圖像的來源(路徑或 URL)。這里src的值被設置為1,這不是一個有效的圖片路徑或 URL,所以瀏覽器會無法加載該圖片,從而引發一個錯誤。
????????onerror是<img>標簽的一個事件屬性,當圖像加載過程中出現錯誤時,瀏覽器會觸發onerror事件,然后執行onerror后面指定的 JavaScript 代碼。在這里,onerror后面跟著alert(1),這是一個簡單的 JavaScript 函數調用,alert函數會彈出一個警告框,顯示數字1。
如果這段代碼被包含在一個網頁中,并且用戶的瀏覽器嘗試加載這個網頁,那么當瀏覽器解析到這個<img>標簽時,由于src屬性值無效導致圖像加載錯誤,就會觸發onerror事件,進而執行alert(1),彈出警告框。?

5.

?

?

?

?

6.

?

?

?

?

?

7.

?

?

?

"onmouseover="alert(1)

?

8.

?

?

9.

'-alert(1)-'

10.

XSS跨站腳本攻擊漏洞防御措施

輸入驗證和過濾
  • 白名單驗證:在服務器端,對用戶輸入的數據進行嚴格驗證,只允許符合預定義規則的字符和內容通過。例如,對于用戶的用戶名輸入,只允許字母、數字和特定的符號,其他字符則拒絕。
  • 過濾特殊字符:對用戶輸入中的特殊字符進行過濾或轉義,如將<?轉換為?&lt;>?轉換為?&gt;,這樣可以防止惡意腳本的注入。例如,在 PHP 中可以使用?htmlspecialchars?函數進行轉義。
  • 驗證數據類型和長度:確保用戶輸入的數據類型和長度符合預期。例如,對于年齡輸入,驗證其是否為數字且在合理范圍內。
輸出編碼
  • HTML 實體編碼:在將用戶輸入的數據輸出到 HTML 頁面時,進行 HTML 實體編碼,將特殊字符轉換為對應的 HTML 實體。這樣可以確保即使輸入中包含惡意腳本,也不會被瀏覽器執行。
  • JavaScript 編碼:如果需要在 JavaScript 代碼中輸出用戶輸入的數據,要進行適當的編碼,避免腳本注入。例如,使用?JSON.stringify?對數據進行編碼。
  • CSS 編碼:當將用戶輸入的數據用于 CSS 樣式時,同樣需要進行編碼,防止惡意的 CSS 注入。
配置 HTTP 頭信息
  • Content-Security-Policy(CSP):通過設置 CSP 頭信息,限制頁面可以加載的資源來源,只允許從指定的域名加載腳本、樣式表和其他資源,從而防止惡意腳本的加載和執行。例如,設置?Content-Security-Policy: default-src'self'; script-src'self' trusted - domain.com?表示只允許從當前域名和?trusted - domain.com?加載腳本。
  • X-XSS-Protection:雖然現代瀏覽器對 XSS 攻擊有一定的內置防護機制,但仍然可以通過設置?X-XSS-Protection?頭信息來增強防護。例如,設置?X-XSS-Protection: 1; mode = block?可以讓瀏覽器在檢測到 XSS 攻擊時阻止頁面加載。
框架和庫的安全使用
  • 使用安全的框架:選擇具有良好安全機制的 Web 框架,這些框架通常會提供輸入驗證、輸出編碼等功能,幫助開發者避免常見的 XSS 漏洞。例如,Django、Ruby on Rails 等框架都有相應的安全防護措施。
  • 及時更新依賴庫:保持框架和庫的版本更新,及時修復已知的安全漏洞,避免因使用過時的庫而引入安全風險。
前端驗證和防護
  • 前端輸入驗證:在前端頁面使用 JavaScript 進行輸入驗證,給用戶提供即時的反饋,提示用戶輸入不符合要求。但需要注意的是,前端驗證不能替代服務器端驗證,因為攻擊者可以繞過前端驗證。
  • 使用 HttpOnly 和 Secure 屬性:對于存儲敏感信息的 Cookie,設置?HttpOnly?屬性可以防止 JavaScript 腳本訪問 Cookie,設置?Secure?屬性可以確保 Cookie 只通過 HTTPS 協議傳輸,減少被竊取的風險。
安全意識培訓
  • 開發者培訓:對開發人員進行安全培訓,提高他們對 XSS 攻擊的認識和防范意識,使其在開發過程中遵循安全編碼規范。
  • 用戶教育:向用戶宣傳 XSS 攻擊的風險,提醒用戶不要隨意點擊不明來源的鏈接,避免在不可信的網站上輸入敏感信息。

XSS跨站腳本攻擊漏洞相關名詞

  1. Blind XSS(盲打型 XSS):攻擊者將惡意腳本注入到應用程序中,該腳本不會在正常的頁面顯示中立即執行,而是在應用程序的其他部分(通常是管理員或其他特權用戶訪問的后臺頁面)執行。由于攻擊者無法直接看到攻擊結果,需要采用一些特殊的技術來確認攻擊是否成功,比如利用外部服務器日志記錄或監控特定的網絡流量。
  2. XSS Chaining(XSS 鏈):攻擊者結合多個不同的 XSS 漏洞或者與其他類型的漏洞(如 CSRF、SQL 注入等)組合使用,以實現更復雜和嚴重的攻擊。例如,先利用一個 XSS 漏洞獲取用戶的會話信息,再使用這個會話信息進行跨站請求偽造攻擊。
  3. XSS Worm(XSS 蠕蟲):這是一種特殊的 XSS 攻擊,惡意腳本會自我復制并在不同用戶之間傳播。當一個用戶訪問包含 XSS 蠕蟲的頁面時,腳本會自動修改頁面內容,將自身傳播到其他用戶可能訪問的鏈接或頁面中,從而迅速感染大量用戶。
  4. Anti - XSS Library(反 XSS 庫):開發人員可以使用的工具庫,用于對用戶輸入和輸出進行安全過濾和編碼,防止 XSS 攻擊。這些庫通常提供了各種函數和方法,幫助開發者處理不同類型的數據,確保數據在使用過程中不會引發 XSS 漏洞。
  5. XSS Auditor:部分瀏覽器內置的一種安全機制,用于檢測和阻止反射型 XSS 攻擊。當瀏覽器檢測到可能存在的 XSS 攻擊時,會自動阻止腳本的執行,并對頁面進行相應的處理,以保護用戶的安全。
  6. XSS Payload Generator(XSS 有效載荷生成器):攻擊者使用的工具,可根據不同的攻擊場景和目標,自動生成合適的惡意腳本(即有效載荷)。這些工具可以幫助攻擊者快速構造出能夠繞過目標網站防御機制的 XSS 攻擊代碼。
  7. XSS Obfuscation(XSS 代碼混淆):攻擊者為了繞過防御機制,會對惡意腳本進行混淆處理,使其看起來不像是正常的腳本代碼。例如,使用編碼、加密、拆分代碼等技術,讓 XSS 過濾器難以識別惡意腳本。
  8. Payload(有效載荷):在 XSS 攻擊中,指攻擊者注入的惡意腳本或代碼,用于實現特定的攻擊目的,如竊取用戶信息、執行非法操作等。
  9. Vector(攻擊向量):指攻擊者利用 XSS 漏洞進行攻擊的方式或途徑,例如通過 URL 參數、表單輸入、HTTP 請求頭字段等將惡意腳本注入到目標系統中。
  10. Sanitization(數據凈化):對用戶輸入的數據進行處理,去除或轉義其中可能包含的惡意字符和腳本,以防止 XSS 攻擊。這是一種常見的防御措施,通過對輸入數據進行嚴格的驗證和過濾,確保數據的安全性。
  11. Encoding(編碼):將數據轉換為特定的格式,以便在傳輸和存儲過程中避免數據被誤解或篡改。在 XSS 防御中,常使用 HTML 編碼、URL 編碼等方式對用戶輸入進行處理,將特殊字符轉換為安全的表示形式,防止腳本注入。
  12. CSP(Content - Security - Policy,內容安全策略):一種 HTTP 頭信息,用于指定頁面可以加載的資源來源,限制瀏覽器從非信任的源加載腳本、樣式表、圖片等資源,從而有效防止 XSS 攻擊。通過 CSP,網站管理員可以明確允許或禁止某些來源的資源加載,增強網站的安全性。
  13. HttpOnly:是 Cookie 的一個屬性,設置了?HttpOnly?的 Cookie 不能被客戶端腳本(如 JavaScript)訪問,只能通過 HTTP 協議由服務器進行讀寫操作。這可以防止攻擊者通過 XSS 攻擊竊取用戶的 Cookie 信息,從而保護用戶的登錄狀態和其他敏感信息。
  14. Exploit(漏洞利用):指攻擊者利用 XSS 漏洞編寫的代碼或程序,用于觸發漏洞并執行惡意操作,以達到攻擊目的。
  15. Vulnerability Scanner(漏洞掃描器):一種工具,用于檢測網站或應用程序中是否存在 XSS 等安全漏洞。它通過發送各種測試請求,分析響應來發現可能存在的安全隱患。
  16. XSS Filter(XSS 過濾器):用于檢測和阻止 XSS 攻擊的工具或機制,通常部署在服務器端或網絡設備上,對用戶輸入和輸出的數據進行檢查,識別并過濾掉可能包含惡意腳本的內容。
  17. JavaScript Injection(JavaScript 注入):XSS 攻擊的一種常見形式,攻擊者將惡意的 JavaScript 代碼注入到目標頁面中,使其在用戶瀏覽器中執行,從而實現對用戶的攻擊。
  18. HTML Injection(HTML 注入):攻擊者嘗試將惡意的 HTML 代碼注入到目標頁面中,可能會改變頁面的結構和內容,有時也可用于觸發 XSS 攻擊,例如通過注入包含惡意腳本的 HTML 標簽。
  19. Phishing(網絡釣魚):雖然不完全等同于 XSS,但常常與 XSS 結合使用。攻擊者通過 XSS 攻擊獲取用戶的敏感信息,如用戶名、密碼等,然后利用這些信息進行網絡釣魚,冒充合法用戶進行各種欺詐活動。
  20. Session Hijacking(會話劫持):攻擊者利用 XSS 漏洞獲取用戶的會話標識(如會話 ID),然后使用該標識冒充用戶身份,在用戶的會話中執行操作,獲取用戶的敏感信息或進行其他惡意行為。
  21. Canonicalization(規范化):在處理用戶輸入時,將數據轉換為標準的、規范的形式,以防止攻擊者利用不同的字符編碼或特殊字符組合來繞過輸入驗證和過濾機制,從而避免 XSS 攻擊。
  22. Polyglot Attack(多語言攻擊):攻擊者構造的惡意代碼可以在多種不同的環境或解釋器中執行,例如同時利用 HTML、JavaScript 和 CSS 等多種語言的特性來實施 XSS 攻擊,增加攻擊的復雜性和隱蔽性。
  23. Web Shell:攻擊者通過 XSS 等漏洞上傳到目標服務器的一個腳本程序,它可以為攻擊者提供一個遠程控制服務器的接口,使攻擊者能夠執行各種命令,進一步控制服務器或竊取數據。

個人疑問

反射型XSS為什么是一次性攻擊?
  • 攻擊觸發機制:反射型 XSS 攻擊依賴用戶點擊包含惡意腳本的特定 URL 來觸發。當用戶點擊該 URL 后,服務器將惡意腳本作為響應的一部分反射給用戶瀏覽器,瀏覽器執行腳本從而引發攻擊。但這個過程僅在用戶點擊鏈接的當下發生,一旦用戶關閉相關頁面或進行其他操作,攻擊行為就會停止,不會像存儲型 XSS 那樣,惡意腳本被存儲在服務器端,持續對訪問相關頁面的用戶造成威脅。
  • URL 的一次性特征:攻擊所用的惡意 URL 通常是針對特定目標和場景構造的,具有一次性使用的特點。攻擊者需要誘騙用戶點擊這個特定的 URL 才能實施攻擊,而用戶一旦點擊過該 URL,再次點擊的可能性較低,且其他用戶一般不會輕易點擊與自己無關的陌生 URL。所以,從攻擊的觸發和傳播角度來看,反射型 XSS 攻擊往往是一次性的,難以形成持續性的攻擊效果。
攻擊方向不同,使用的惡意代碼分別是什么?

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

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

相關文章

2、pytest核心功能(進階用法)

目錄 1、標記&#xff08;Markers&#xff09;&#xff1a; 自定義插件 內置標記 2、夾具&#xff08;Fixtures&#xff09;&#xff1a; 夾具得用法 夾具作用域 3、鉤子&#xff08;hook&#xff09;&#xff1a; 這篇是最重要的 測試文件中需要用到的 總的來說 有以下…

恒流源電路深度解析:各類架構的優缺點與應用場景

點擊下面圖片&#xff0c;為您提供全新的嵌入式學習路線 文章目錄 ①. 單晶體管恒流源②. NPNPNP組合恒流源③. 雙晶體管恒流源④. 鏡像電流源⑤. 比例電流源⑥. 微電流源⑦. 加射極輸出的鏡像電流源⑧. 威爾遜電流源⑨.綜合對比表⑩.選型建議 恒流源是電子電路中的基礎模塊&…

研究生入學前文獻翻譯訓練

文獻翻譯 人工智能《Meta - Learning with Memory - Augmented Neural Networks》one-shot learning:Neural Turing Machines,NTMs《Model - Agnostic Meta - Learning for Fast Adaptation of Deep Networks》Meta - learninggradient stepsfinetune《Attention Is All You …

在IDEA中快速注釋所有console.log

在IDEA中快速注釋所有console.log 在前端IDEA中&#xff0c;快速注釋所有console.log語句可以通過以下步驟實現2&#xff1a; 打開要修改的文件。使用快捷鍵CtrlF打開搜索框。點擊打開使用正則搜索的開關或者通過AltR快捷鍵來打開。在搜索框輸入[]*console.log[]*&#xff0c;…

#C8# UVM中的factory機制 #S8.2.1# factory 機制重載法則

factory機制最偉大的地方在于其具有重載功能。重載并不是factory機制的發明,前面已經介紹過的所有面向對象的語言都支持函數/任務重載,另外,SystemVerilog還額外支持對約束的重載。只是factory機制的重載與這些重載都不一樣。 一 問題引出 以8.1.1節的代碼清單8-1和代碼清…

macOS 15 通過 MacPorts 安裝 PHP 7 構建錯誤找不到符號在 dns.o 中解決方法

構建遇到的問題如下&#xff1a; "_res_9_dn_expand", referenced from:_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_zif_dns_get_mx in dns.o..."_res_9_dn_skipname&…

MDK優化等級對浮點運算效率的影響

MDK優化等級&#xff1a;Default模式 和 O0模式 在支持浮點運算的MCU&#xff08;如STM32的Cortex-M4或Cortex-M7系列&#xff09;上&#xff0c;執行浮點運算的算法時&#xff0c;MDK編譯器的優化等級配置為 default模式&#xff08;通常是O1或O2&#xff09;和 O0模式&#…

嵌入式學習第二十八天--棧

棧的基本代碼 棧是限定僅在表尾進行插入和刪除操作的線性表。 先進后出、后進先出 棧頂:允許操作的一端 棧底:不允許操作的一端 入棧&#xff0c;出棧。 順序棧 鏈式棧 302\5 1.創建 CreateSeqStack 2.銷毀 DestroySeqStack 3.判斷是否為空棧 IsEmptySeqStack 4.判斷是否為滿…

MySQL中怎么分析性能?

MySQL中主要有4種方式可以分析數據庫性能&#xff0c;分別是慢查詢日志&#xff0c;profile&#xff0c;Com_xxx和explain。 慢查詢日志 先用下面命令查詢慢查詢日志是否開啟&#xff0c; show variables like slow_query_log;# 一般默認都是以下結果 ---------------------…

大模型在支氣管哮喘手術全流程風險預測與治療方案制定中的應用研究

目錄 一、引言 1.1 研究背景與意義 1.2 研究目標與方法 1.3 研究創新點 二、支氣管哮喘概述 2.1 定義與發病機制 2.2 分類與臨床表現 2.3 診斷標準與方法 三、大模型技術原理與應用現狀 3.1 大模型的基本原理 3.2 在醫療領域的應用案例分析 3.3 適用于支氣管哮喘預…

《AI Agent智能應用從0到1定制開發》學習筆記:使用RAG技術增強大模型能力,實現與各種文檔的對話

思維導圖 &#x1f4da; 引言 大型語言模型&#xff08;如ChatGPT&#xff09;雖然功能強大&#xff0c;但它們存在一些明顯的局限性。這些模型的知識庫更新較慢&#xff0c;無法實時學習最新內容&#xff0c;而且對私有數據或特定領域的專業知識了解有限。例如&#xff0c;Ch…

Python 爬蟲(4)HTTP協議

文章目錄 一、HTTP協議1、HTTP特點2、HTTP工作原理3、HTTP與HTTPS的區別 前言&#xff1a; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本傳輸協議&#xff09;是互聯網上應用最為廣泛的一種網絡協議&#xff0c;用于在客戶端和服務器之間傳輸超文本&#xf…

測試工程 常用Python庫

以下是測試工程師在Python中必須掌握的常用庫、框架以及提升日常工作效率的技巧總結&#xff1a; 一、必須掌握的Python庫與框架 1. 測試框架 unittest Python內置的單元測試框架&#xff0c;提供測試用例、測試套件、斷言等功能&#xff0c;適合單元測試和集成測試。核心組件…

【線程安全問題的原因和方法】【java形式】【圖片詳解】

在本章節中采用實例圖片的方式&#xff0c;以一個學習者的姿態進行描述問題解決問題&#xff0c;更加清晰明了&#xff0c;以及過程中會發問的問題都會一一進行呈現 目錄 線程安全演示線程不安全情況圖片解釋&#xff1a; 將上述代碼進行修改【從并行轉化成穿行的方式】不會出…

Infinite you:flexible photo recrafting while preserving your identity

基于DiT的id保留圖像生成面臨著多種挑戰,缺乏定制模塊設計,模型擴展的困難以及高質量數據的匱乏,因此基于flux的解決方案是相對稀缺的,pulid-flux是基于flux的id保留的初步嘗試,包括instantx和xlabs-ai的flux.1-dev ip-adapters,現有方法在三個關鍵方面保險不足:1.身份相…

Unity 實現一個簡易可拓展性的對話系統

本人能力有限,一切實現僅供參考,如有不足還請斧正 起因是我看到學校社團內有人做了對話系統的分享,我想了想之前沒寫過這種東西,而Fungus插件教程太老了,NodeCanvas插件學習成本又比較高,我就干脆尋找資料 加上自己迭代一下,花了一天時間完成了這個對話系統 目錄 1.介紹 2.核…

linux常用指令(6)

今天我們繼續學習一些linux常用指令,豐富我們linux基礎知識,那么話不多說,來看. 1.cp指令 功能描述&#xff1a;拷貝文件到指定目錄 基本語法&#xff1a;cp [選項] source dest 常用選項&#xff1a;-r&#xff1a;遞歸復制整個文件夾 拷貝文件&#xff1a; 拷貝文件夾&am…

Vue 3 中的路由傳參詳解※※※※

前言 在Vue應用中&#xff0c;路由傳參是非常常見的需求&#xff0c;它允許我們在不同的組件之間傳遞數據。Vue Router提供了兩種主要的方式來傳遞參數&#xff1a;query參數和params參數。下面我們將詳細探討這兩種傳參方式的使用方法和注意事項。 一、query參數 Query參數…

如何創建一個socket服務器?

1. 導入必要的庫 首先&#xff0c;需要導入Python的socket庫&#xff0c;它提供了創建和管理socket連接的功能。 python import socket 2. 創建服務器端socket 使用socket.socket()函數創建一個服務器端的socket對象&#xff0c;指定協議族&#xff08;如socket.AF_INET表示…

lua垃圾回收

lua垃圾回收 lua 垃圾回收 lua 垃圾回收 collectgarbage(“count”)獲取當前lua腳本占用內存字節數(單位為KB)。 collectgarbage(“collect”)執行一次垃圾回收。 xxxnil 將變量置為空&#xff0c;會釋放內存。 lua中的機制和c#中回收機制很類似 解除羈絆(置為空)。 --垃圾回…