目錄
回覆內容:
重要:
首頁 後端開發 php教程 求mysql_real_escape_string()防注入詳解

求mysql_real_escape_string()防注入詳解

Aug 04, 2016 am 09:20 AM
mysql php

mysql_real_escape_string()被視為替代addslashes()和mysql_escape_string()的好方法,可以解決寬字節和注入問題,不過官方對其的描述卻說的不清不楚:

求mysql_real_escape_string()防注入詳解

mysql_real_escape_string — 轉義 SQL 語句中使用的字串中的特殊字符,並考慮連接的當前字符集

這句真沒懂,考慮到連接的當前字符集啥意思,請高手詳細講講,謝謝!

參考:
http://php.net/manual/zh/function.mysql-real-escape-string.php
http://www.cnblogs.com/suihui/archive/2012/09/20/2694751. html
http://www.neatstudio.com/show-963-1.shtml

補充問題: @演演演演
1.加的並不會傳入mysql中,那麼如果注入了' or 1=1;-- s ,這裡的注入內容最終還不是傳到mysql去了執行了嗎?
參照:https://segmentfault.com/q/1010000005994443

2.並考慮到連接的當前字符集啥意思呢?改變當前連接的字符集?

回覆內容:

mysql_real_escape_string()被視為替代addslashes()和mysql_escape_string()的好方法,可以解決寬字節和注入問題,不過官方對其的描述卻說的不清不楚:

求mysql_real_escape_string()防注入詳解

mysql_real_escape_string — 轉義 SQL 語句中使用的字串中的特殊字符,並考慮連接的當前字符集

這句真沒懂,考慮到連接的當前字符集啥意思,請高手詳細講講,謝謝!

參考:
http://php.net/manual/zh/function.mysql-real-escape-string.php
http://www.cnblogs.com/suihui/archive/2012/09/20/2694751. html
http://www.neatstudio.com/show-963-1.shtml

補充問題: @演演演演
1.加的並不會傳入mysql中,那麼如果注入了' or 1=1;-- s ,這裡的注入內容最終還不是傳到mysql去了執行了嗎?
參照:https://segmentfault.com/q/1010000005994443

2.並考慮到連接的當前字符集啥意思呢?改變當前連接的字符集?

這個說的就是mysql gbk雙位元組注入

例如使用者登入 假設你的sql語句:
$sql = "select * from user where user_name='$username' and password='$password'";

1 如果存在註入點 且也沒有轉義。傳遞參數username=' or 1=1;-- s 那麼此時的sql語句就是

$sql = "select * from user where user_name='' or 1=1;-- s ' and password='$password'";

因為--是註解符 所以後面不用判斷成功繞過

2 如果存在註入點 並且使用了特殊字元轉義。那麼此時的sql語句就是

$sql = "select * from user where user_name='' or 1=1;-- s ' and password='$password'";

無法繞過

3 這時候問題來了,牛逼的駭客發現了gbk編碼時存在寬位元組注入。這時候傳遞username=%df%27 或 1=1;--

這個時候執行的sql語句變成了:

$sql = "select * from user where user_name='運' or 1=1;-- s ' and password='$password'"; 成功繞過

如何解決這個問題

mysql_real_escape_string — 轉義 SQL 語句中使用的字串中的特殊字符,並考慮到連接的當前字符集

mysql_real_escape_string方法對SQL語句的轉義機制,隨著目前資料庫連接的字元集的改變而改變。相同的SQL語句,不同的字元集下,轉義後的結果不一定相同。

重要:

mysql_real_escape_string方法屬於mysql擴展,自PHP版本5.5.0之後已被標記為過時,並在版本5.5.0之後已被標記為過時,並在之後被移除版本。請使用mysqliPDO擴充進行資料庫操作。資料庫字符集請盡量使用utf8

utf8mb4🎜(更好)。 🎜
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是強大的數據庫管理工具。 1)MySQL用於創建數據庫和表、執行DML和SQL查詢。 2)phpMyAdmin提供直觀界面進行數據庫管理、表結構管理、數據操作和用戶權限管理。

IIS和PHP的兼容性:深度潛水 IIS和PHP的兼容性:深度潛水 Apr 22, 2025 am 12:01 AM

IIS和PHP可以兼容,通過FastCGI實現。 1.IIS通過配置文件將.php文件請求轉發給FastCGI模塊。 2.FastCGI模塊啟動PHP進程處理請求,提高性能和穩定性。 3.實際應用中需注意配置細節、錯誤調試和性能優化。

在MySQL中解釋外鍵的目的。 在MySQL中解釋外鍵的目的。 Apr 25, 2025 am 12:17 AM

在MySQL中,外鍵的作用是建立表與表之間的關係,確保數據的一致性和完整性。外鍵通過引用完整性檢查和級聯操作維護數據的有效性,使用時需注意性能優化和避免常見錯誤。

比較和對比Mysql和Mariadb。 比較和對比Mysql和Mariadb。 Apr 26, 2025 am 12:08 AM

MySQL和MariaDB的主要區別在於性能、功能和許可證:1.MySQL由Oracle開發,MariaDB是其分支。 2.MariaDB在高負載環境中性能可能更好。 3.MariaDB提供了更多的存儲引擎和功能。 4.MySQL採用雙重許可證,MariaDB完全開源。選擇時應考慮現有基礎設施、性能需求、功能需求和許可證成本。

SQL與MySQL:澄清兩者之間的關係 SQL與MySQL:澄清兩者之間的關係 Apr 24, 2025 am 12:02 AM

SQL是一種用於管理關係數據庫的標準語言,而MySQL是一個使用SQL的數據庫管理系統。 SQL定義了與數據庫交互的方式,包括CRUD操作,而MySQL實現了SQL標準並提供了額外的功能,如存儲過程和触發器。

如果session_start()被多次調用會發生什麼? 如果session_start()被多次調用會發生什麼? Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

MySQL與Oracle有何不同? MySQL與Oracle有何不同? Apr 22, 2025 pm 05:57 PM

MySQL適合快速開發和中小型應用,Oracle適合大型企業和高可用性需求。 1)MySQL開源、易用,適用於Web應用和中小型企業。 2)Oracle功能強大,適合大型企業和政府機構。 3)MySQL支持多種存儲引擎,Oracle提供豐富的企業級功能。

MySQL:數據庫,PHPMYADMIN:管理接口 MySQL:數據庫,PHPMYADMIN:管理接口 Apr 29, 2025 am 12:44 AM

MySQL和phpMyAdmin可以通過以下步驟進行有效管理:1.創建和刪除數據庫:在phpMyAdmin中點擊幾下即可完成。 2.管理表:可以創建表、修改結構、添加索引。 3.數據操作:支持插入、更新、刪除數據和執行SQL查詢。 4.導入導出數據:支持SQL、CSV、XML等格式。 5.優化和監控:使用OPTIMIZETABLE命令優化表,並利用查詢分析器和監控工具解決性能問題。

See all articles