SQL注入、XSS以及CSRF分別是什麼?

2021-01-08 php中文網

什麼是SQL注入、XSS和CSRF?本篇文章就來帶大家了解一下SQL注入、XSS和CSRF,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

SQL注入

SQL注入是屬於注入式攻擊,這種攻擊是因為在項目中沒有將代碼與數據(比如用戶敏感數據)隔離,在讀取數據的時候,錯誤的將數據作為代碼的一部分執行而導致的。

典型的例子就是當對SQL語句進行字符串拼接的時候,直接使用未轉義的用戶輸入內容作為變量。這時,只要在sql語句的中間做修改,比如加上drop、delete等關鍵字,執行之後後果不堪設想。

說到這裡,那麼該怎麼處理這種情況呢?三個方面:

1、過濾用戶輸入參數中的特殊字符,降低風險。

2、禁止通過字符串拼接sql語句,要嚴格使用參數綁定來傳入參數。

3、合理使用資料庫框架提供的機制。就比如Mybatis提供的傳入參數的方式 #{},禁止使用${},後者相當於是字符串拼接sql,要使用參數化的語句。

總結下,就是要正確使用參數化綁定sql變量。

XSS

XSS:跨站腳本攻擊,Cross-Site Scripting,為了和前端的css避免重名,簡稱為XSS,是指通過技術手段,向正常用戶請求的HTML頁面中插入惡意腳本,執行。

這種攻擊主要是用於信息竊取和破壞等目的。比如2011年的微博XSS攻擊事件,攻擊者利用了微博發布功能中未對action-data漏洞做有效的過濾,在發布微博信息的時候帶上了包含攻擊腳本的URL,用戶訪問就會加載惡意腳本,導致大量用戶被攻擊。

關於防範XSS上,主要就是通過對用戶輸入的數據做過濾或者是轉義,可以使用框架提供的工具類HtmlUtil。另外前端在瀏覽器展示數據的時候,要使用安全的API展示數據。比如使用innerText而不是innerHTML。

CSRF

跨站請求偽造,在用戶並不知情的情況下,冒充用戶發送請求,在當前已經登錄的web網站上執行惡意操作,比如惡意發帖,修改密碼等。

大致來看,與XSS有重合的地方,前者是黑客盜用用戶瀏覽器中的登錄信息,冒充用戶去執行操作。後者是在正常用戶請求的HTML中放入惡意代碼,XSS問題出在用戶數據沒有轉義,過濾;CSRF問題出現在HTTP接口沒有防範不守信用的調用。

防範CSRF的漏洞方式:

1、CSRF Token驗證,利用瀏覽器的同源限制,在HTTP接口執行前驗證Cookie中的Token,驗證通過才會繼續執行請求。

2、人機互動,例如簡訊驗證碼、界面的滑塊。

以上就是什麼是SQL注入、XSS和CSRF?的詳細內容,更多請關注php中文網其它相關文章!

相關焦點

  • 安全漏洞XSS、CSRF、SQL注入以及DDOS攻擊
    安全漏洞XSS、CSRF、SQL注入以及DDOS攻擊 隨著網際網路的普及,網絡安全變得越來越重要,程式設計師需要掌握最基本的web安全防範,下面列舉一些常見的安全漏洞和對應的防禦措施。
  • Java最新SQL注入原因以及預防方案(易理解)
    前沿在現有的框架中sql防注入已經做得很好了,我們需要做的就是儘量不要使用sql拼接調用java sql注入原因以及預防方案(易理解)SQL注入1.1 原理SQL注入是通過客戶端的輸入把SQL命令注入到一個應用的資料庫中,從而執行惡意的SQL語句。1.2 演示1.2.1 案例1有一個登錄框,需要 輸入用戶名和密碼 ,然後我們的密碼輸入 'or '123' = '123 這樣的。
  • 佔全球70%網絡安全攻擊的web攻擊:XSS攻擊是什麼?如何防範!
    xss跨站腳本攻擊(Cross Site Scripting)縮寫為css,因與層疊樣式表重名而改為XSS,是一種網絡攻擊方式。研究表明,目前xss攻擊已成最主流的網絡web攻擊方式,約佔全球網絡攻擊的70%。
  • 最詳細的SQL注入相關的命令整理
    7)SQL注入建立虛擬目錄,有dbo權限下找不到web絕對路徑的一種解決辦法:我們很多情況下都遇到SQL注入可以列目錄和運行命令,但是卻很不容易找到web所在目錄,也就不好得到一個webshell,這一招不錯:?
  • SQL注入是什麼?如何防止?
    SQL注入是一種注入攻擊,可以執行惡意SQL語句。下面本篇文章就來帶大家了解一下SQL注入,簡單介紹一下防止SQL注入攻擊的方法,希望對大家有所幫助。什麼是SQL注入?SQL注入(SQLi)是一種注入攻擊,,可以執行惡意SQL語句。它通過將任意SQL代碼插入資料庫查詢,使攻擊者能夠完全控制Web應用程式後面的資料庫伺服器。
  • 使用exp進行SQL報錯注入 - 51CTO.COM
    mysql> select exp(2.70805020110221);+---+| exp(2.70805020110221) |+---+|                    15 |+---+1 row in set (0.00 sec)0x02 注入
  • sqltoy-orm-4.16.11 發版,部分功能優化
    的十四個關鍵特點:1、最簡最直觀的sql編寫方式(不僅僅是查詢語句),採用條件參數前置處理規整法,讓sql語句部分跟客戶端保持高度一致2、sql中支持注釋(規避了對hint特性的影響,知道hint嗎?搜oracle hint),和動態更新加載,便於開發和後期維護整個過程的管理3、支持緩存翻譯和反向緩存條件檢索(通過緩存將名稱匹配成精確的key),實現sql簡化和性能大幅提升4、支持快速分頁和分頁優化功能,實現分頁最高級別的優化,同時還考慮到了cte多個with as情況下的優化支持5、支持並行查詢6、根本杜絕sql注入問題,以後不需要討論這個話題7、支持行列轉換
  • MyBatis dynamic SQL 1.1.4 發布,生成動態 SQL 的框架
    此版本包含兩項增強功能: 支持在計數、刪除、選擇和更新語句之間共享 where 子句 改進 Kotlin DSL - 刪除了一些引起歧義的擴展方法,並添加了自定義構建器以及一項 bug 修復: 修復了以下錯誤:在子查詢中首先使用限制/偏移/獲取會導致參數名稱衝突完整更新內容可查看:https://github.com/mybatis/mybatis-dynamic-sql
  • 這個函數讓SQL效率提升99%
    開窗函數分別應用於每個分區,並為每個分區重新啟動計算。value_expression 指定對相應 FROM 子句生成的行集進行分區所依據的列。value_expression 只能引用通過 FROM 子句可用的列。value_expression 不能引用選擇列表中的表達式或別名。value_expression 可以是列表達式、標量子查詢、標量函數或用戶定義的變量。
  • MyBatis Dynamic SQL 1.0.0,生成動態 SQL 語句的框架
    該庫通過實現一個類似 SQL 的 DSL 來創建一個對象,該對象包含完整的 SQL 語句以及該語句所需的任何參數。SQL 語句對象可以被 MyBatis 直接用作映射器方法的參數。Maven 使用<dependency>  <groupId>org.mybatis.dynamic-sql</groupId>  <artifactId>mybatis-dynamic-sql</artifactId>  <version>1.0.0</version><
  • 大數據分析工程師入門9-Spark SQL
    你該了解的Spark SQL簡單入門操作不得不說的數據源一你該了解的Spark SQL1.什麼是hive讀取hive數據的前提是要進行相關的配置,需要將hive-site.xml、core-site.xml、hdfs-site.xml以及hive的lib依賴放入spark的classpath下,或者在提交作業時通過--files和--jars來指定這些配置文件和
  • PandaSQL:一個讓你能夠通過SQL語句進行pandas的操作的python包
    我們可以通過聯接項目列以及聯接條件(TransactionDt≥StartDt和TransactionDt≤EndDt)來實現這一點。因為現在我們的連接條件也有大於號和小於號,這樣的連接稱為不等連接。在繼續之前,一定要考慮如何在pandas中做這樣的事情。pandas的解決方案那麼在pandas身上該怎麼做呢?
  • SQL語句性能調整之ORACLE的執行計劃
    這個語句的優點就是它的缺點,這樣在用該方法查看執行時間較長的sql語句時,需要等待該語句執行成功後,才返回執行計劃,使優化的周期大大增長。  如果不想執行語句而只是想得到執行計劃可以採用:  Sql> set autotrace traceonly  這樣,就只會列出執行計劃,而不會真正的執行語句,大大減少了優化時間。
  • Mybatis中SqlSource解析流程詳解
    前面幾篇文章都在詳細分析mapper的加載過程,但是始終沒有看到sql的解析過程,今天來詳細分析下。大的方向梳理了我們再來看這個方法到底在幹什麼,首先這個方法會收集SqlNode對象放到contents集合中,最後把contents作為參數生成MixedSqlNode對象。
  • SpringSecurity框架下實現CSRF跨站攻擊防禦
    一、什麼是CSRF很多朋友在學習Spring Security的時候,會將CORS(跨站資源共享)和CSRF(跨站請求偽造)弄混,以為二者是一回事。其實不是,先解釋一下:CORS(跨站資源共享)是局部打破同源策略的限制,使在一定規則下HTTP請求可以突破瀏覽器限制,實現跨站訪問。
  • c使用sql server專題及常見問題 - CSDN
    為php添加 sqlsrv 擴展去微軟官網 https://www.microsoft.com/en-us/download/ 搜索php ,點擊 Microsoft Drivers for PHP for SQL Server 下載最新版的 sqlsrvXX.exe( 我下載的是SQLSRV32.EXE )運行解壓, 得到一堆DLL, 選取適合自己
  • 春眠不覺曉,SQL 知多少?|原力計劃
    IBM 隨後基於其 SystemR 原型開發商業產品,分別於 1979 年、1981 年和 1983 年上市了 system/38、SQL/DS 和 DB2 資料庫管理系統。不過早在 1979 年 6 月,Relational Software,Inc.