php 安全mysql,關于php:我從mysql注入安全嗎?

本問題已經有最佳答案,請猛點這里訪問。

這是否足以避免SQL注入?

這里只需要mysql_real_escape_string()方法。在將數據插入數據庫之前,不應該執行htmlentities()或urlencode()。這些方法通常是在呈現您提供給用戶的視圖期間編寫的代碼。

避免SQL注入的更好方法是使用準備好的語句。

資源:

php.net-用pdo編寫語句

關于同一主題:

php:mysql-real-escape-string是否足以清除用戶輸入?

+準備好的報表。在正確的情況下,它們也可以幫助提高性能。

+準備好的報表1份

<3個準備好的聲明:)

我認為您混淆了兩個安全問題:SQL注入和跨站點腳本(XSS)。

如果在發送到SQL數據庫的SQL查詢中使用了未正確清理的用戶輸入,則網站容易受到SQL注入的攻擊。例如,此代碼引入了一個SQL注入漏洞:

mysql_query("INSERT INTO postmessages (postmessage) VALUES ('" . $_POST['postmessage'] ."')");

這個問題很容易通過使用像mysql_real_escape_string這樣的函數來轉義用戶輸入來解決:

mysql_query("INSERT INTO postmessages (postmessage) VALUES ('" . mysql_real_escape_string($_POST['postmessage']) ."')");

這就是您需要做的全部工作,但最棘手的部分是記住要為SQL語句中使用的每一個用戶輸入完成這項工作。

當用戶輸入在發送到客戶機的HTML中使用時,網站容易受到跨站點腳本攻擊。例如,此代碼引入了一個XSS漏洞:

echo"" . $_POST['postmessage'] ."";

通過使用類似于htmlspecialchars的函數來轉義用戶輸入,可以修復XSS漏洞:

echo"" . htmlspecialchars($_POST['postmessage']) ."";

同樣,這很容易做到,但很容易被遺忘。

通常,將用戶輸入放在數據庫中以便在以后發送HTML時使用的輸入保存為未修改的。也就是說,只使用mysql_real_escape_string。但是,您可以轉義用戶輸入以防止XSS,然后轉義XSS安全字符串以防止SQL注入:

mysql_query("INSERT INTO postmessages (postmessage) VALUES ('" . mysql_real_escape_string(htmlspecialchars($_POST['postmessage'])) ."')");

好處是,在將值寫入HTML之前,不需要記住使用htmlspecialchars從數據庫中轉義值。缺點是一些值可能需要使用不同的函數進行轉義。例如,用戶名可能與htmlspecialchars一起轉義,但"postmessage"可能允許bbcode、markdown或html的子集。如果您對所有輸入進行轉義以防止XSS,那么您將需要使用htmlspecialchars_decode等工具從數據庫中取消對值的scape。

一個問題是,取消轉義字符串的轉義并不總是返回原始字符串(unescape(escape($orig))不一定與$orig相同)。即使使用htmlspecialchars和htmlspecialchars_decode,使用不同的引號樣式也會導致此問題。另一個例子是,如果使用了strip_tags,那么信息將無法恢復地被刪除;您將無法撤消strip_tags。因此,許多開發人員選擇使用mysql_real_escape_string只將值保存到數據庫中,而htmlspecialchars則從數據庫中準備一個字符串以用于HTML。

使用準備好的語句,更清晰地查看,并且一旦掌握了它的竅門,可能更容易處理,這不是更好嗎?

@施樂:當然。準備好的語句使一致地轉義用戶輸入更加容易。然而,在回答OP的問題時,我想確保他/她理解使用mysql_real_escape_string或某些db轉義機制和htmlentities或某些xss轉義機制的原因。

是的,但不使用mysql_real_escape_string()是有原因的。首先,打字很痛苦。其次,你必須記住每次都要使用它。第三,它會使代碼變得丑陋。第四,你必須記住引用你的字符串。第五,以這種方式在數據庫中插入blob更困難。

從長遠來看,學習PDO將使你的生活變得更好。學習起來比簡單使用mysql_real_escape_string()更困難,但是長期的好處超過了學習曲線帶來的不便。

您還應該確保在插入代碼的地方使用"around"。

例如,如果你這樣做

$_POST['userid'] = mysql_real_escape_string($_POST['userid']);

mysql_query('SELECT * FROM user WHERE userid = '. $_POST['userid']);

mysql-real-escape-string沒有任何幫助。這是因為"$u post['userid']沒有被包圍"。

所以你應該這么做

$_POST['userid'] = mysql_real_escape_string($_POST['userid']);

mysql_query('SELET * FROM user WHERE userid = \''. $_POST['userid'] .'\'');

相反。

所以在變量上使用mysql-real-escape-string并不意味著它們在任何查詢中都是安全的。

另一種方法是使用準備好的語句。

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

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

相關文章

excel單元格斜線_怎么在excel中畫斜線?怎么在excel表格中畫斜線?

在excel表格中畫斜線的技巧教程&#xff1a;1.在Excel中打開一個空白工作簿。 2.您可以在任何大小的單元格中執行此操作&#xff0c;但是如果先將其增大則更容易理解。為此&#xff0c;我們只需單擊并按住第1行和第2行之間的線&#xff0c;然后將其拖動到所需的高度即可。然后對…

php報表數據打印機,通過打印機打印帶打印功能的php表

我有以下php表,我如何只在php表中添加打印功能&#xff1f;點擊一個按鈕,下面的表格通過打印機打印,我試過’CTRL P’,我只得到頁面的html部分示例頁眉,頁腳,導航欄,而不是結果php結果echo "FILEIDFirstnameLastnameIssue DateInterest RateTermsBalance OutstandingBalan…

xbox one s驅動_理想照進現實 理想ONE開始接受預定

2016年4月22日&#xff0c;車和家創始人&CEO李想在源碼資本第二屆碼會年會首談車和家&#xff0c;改造城市出行。車和家 創始人&CEO 李 想2016年碼會年會演講2019年4月10日&#xff0c;增程式智能電動車「理想ONE」正式公布售價并開始接受預訂&#xff0c;并將于2019年…

two+few+arguments+php,PHP5.5 ~ PHP7.2 新特性整理

PHP5.5 ~ PHP7.2 新特性整理一、從PHP 5.5.x 移植到 PHP 5.6.x使用表達式定義常量在之前的 PHP 版本中&#xff0c; 必須使用靜態值來定義常量&#xff0c;聲明屬性以及指定函數參數默認值。 現在你可以使用包括數值、字符串字面量以及其他常量在內的數值表達式來 定義常量、聲…

date設置時間_解決 IDEA 無法找到 java.util.Date 的問題

原文首發于 https://studyidea.cn/問題最近在項目中頻繁使用到 java.util.Date&#xff0c;但是使用 IDEA 提示查找 Date 類&#xff0c;卻無法找到 java.util.Date。可以看到&#xff0c;智能提示的結果沒有 java.util.Date。沒辦法&#xff0c;只能暫時手動導入該包。最近閑下…

mysql插入語句例句,一句簡單的MySql插入語句怎么寫 ?

守候你守候我insert into 表名 values(default,"名字","2011-04-15 12:22:25"); //default可以換成null------------------------------insert into 表名 (name,datetime) values("名字","2011-04-15 12:22:25");使用SQL語法大寫&…

vue key重復_【第2112期】 import { reactive } from #39;vue#39;

前言今日早讀文章由Anthony Fu授權分享。Anthony Fu&#xff0c;是 Vue 的 Core Team 的一員&#xff0c;在 Vue主要負責 vue/composition-api 這個項目的維護。這是一個面向 Vue 2 的插件&#xff0c;它在 Vue 2 中增加了 Vue 3 的 Composition API 的支持。最近也加入了 Vite…

matlab系統穩定性分析,控制系統穩定性分析的MATLAB實現

收稿日期 :200706220 基金項目 :周口師范學院青年基金資助項目(No. ZKNUQN200621) 作者簡介 :劉  偉(1976 - ) ,女 ,河南太康人 ,助教 ,碩士 ,主要從事電力系統及其自動化仿真研究. 第 25 卷 第 2 期 周口師范學院學報 2008 年 3 月 Vol. 25 No. 2 Journal of Zhoukou Normal …

路由器下一跳地址怎么判斷_網絡基本功三:細說路由器

介紹以太網交換機工作在第二層即數據鏈路層&#xff0c;用于在同一網絡內部轉發以太網幀。但是&#xff0c;當源和目的IP地址位于不同網絡時&#xff0c;以太網幀必須發送給路由器。路由器負責在不同網絡間傳輸報文&#xff0c;通過路由表來決定最佳轉發路徑。當主機將報文發送…

HTML多選mysql,html多選下拉框 | 學步園

一個jquery ui,實現html的多選下拉框&#xff0c;在下拉里面加checkbox&#xff0c;不改變頁面的提交特性&#xff0c;只是動態的改變select選中的多選數據。jsp頁面例子&#xff1a;pageEncoding"UTF-8" import"java.util.*,java.text.*"%>String path…

利用逆矩陣解線性方程組_經典Jacobi方法用于求解矩陣特征值

1、引言求解線性方程組在許多領域中都有重要應用&#xff0c;寫成矩陣的形式&#xff1a; 。求解 可以寫成&#xff1a; &#xff0c;這里需要求解矩陣 的逆。《線性代數》中給出的方法主要有兩類&#xff1a;1、設置增廣矩陣&#xff0c;利用高斯消元法&#xff0c;通過初等行…

filename: core/loader.php,使用第三方包后出現的這個錯誤,你們都遇到過嗎?

使用了一些第三方包&#xff0c;經常會發現&#xff0c;引入某些第三方包后(比如在laravel5.6中引入viacreative/sudo-su)&#xff0c;使用命令行工具會遇到這樣的錯誤提示&#xff0c;卸載了第三方包后重新安裝vendor目錄問題立馬解決。真是把人頭發都愁白了&#xff1a;PHP F…

python函數的作用域_python學習第五篇 函數 變量作用域

原博文 2019-07-18 23:40 ? 函數 函數是組合好的&#xff0c;可以重復使用的&#xff0c;用來實現單一或相關聯功能的代碼片段作用 能提高應用的模塊性和代碼的重復利用率函數的創建 第一函數的規則 1.函數代碼塊一def關鍵字開頭&#xff0c;后接函數標識符名稱和圓括號‘&…

js post中文亂碼 php,AJAX之POST數據中文亂碼如何解決

本文主要和大家分享AJAX之POST數據中文亂碼如何解決&#xff0c;前端使用encodeURI進行編碼&#xff0c;希望能幫助到大家。var param encodeURI(param);$.ajax({url: url,methodtype: "POST",async: false,timeout: 60000,contentType: "application/json&quo…

python遞歸 數字全排列_利用遞歸實現全排列(python)

利用遞歸實現全排列(python) """ 利用遞歸實現全排列 第一個位置可能有n種可能&#xff0c;第二個位置可能 有n-1種可能...... 代碼思路就是第一個位置可以和n個元素交換&#xff0c; 第二個元素可以和n-1個元素進行交換&#xff0c;到最 后一個輸出這次排列&am…

python pip使用_Python——pip的安裝與使用

pip 是 Python 包管理工具&#xff0c;該工具提供了對Python 包的查找、下載、安裝、卸載的功能。目前如果你在 python.org 下載最新版本的安裝包&#xff0c;則是已經自帶了該工具。Python 2.7.9 或 Python 3.4 以上版本都自帶 pip 工具。pip 官網&#xff1a;https://pypi.o…

php文章列表樣式,PHPCMS V9 文章列表循環樣式自定義方法

在此&#xff0c;再次分享Whidy的文章"phpcms文章列表循環不同樣式制作方法"&#xff0c;下面CMSYOU來與大家具體分享&#xff0c;原地址為http://whidy.net/phpcms-list-with-different-style.html&#xff0c;在這里感謝。大家在用PHPCMS系統做網站的時候,有時候在…

角速度求積分能得到歐拉角嗎_一個有趣的反常積分問題

今天物理考試&#xff0c;老師提到了一個有趣的積分問題。聽說是拉普拉斯變換的一個應用之一&#xff08;生成函數&#xff1f;&#xff09;&#xff0c;但是我沒聽過那個東西所以硬上了&#xff1a;D1&#xff09;試求積分 2) 試說明積分 的收斂性1&#xff09;對于第一問可以…

php計算1-100奇數的和,學習腳本1:計算100以內奇數和和偶數和 (筆記)

let I$[$I1]let I1let I 注意此處只有是原先數值加1才可用此方法上述三者運算是相同的- 減等 兩邊的變量前邊的減去后邊的變量之后把值再放到原來的變量上 加等 兩的的變量前邊的加上后邊的變量之后把值再放到原來的變量上* 乘等 兩邊的變量前邊的乘上后邊的變量之后把值再放到…

查看ie保存的表單_解決瀏覽器保存密碼自動填充問題

解決瀏覽器保存密碼自動填充問題問題描述話說有一天&#xff0c;我如往常一樣打開我的開發網站進行登錄操作。瀏覽器很平常的在我們進行登錄操作之后詢問我是否需要記住密碼&#xff0c;懶惰如我點擊了記住密碼。一切都很正常的進行著&#xff0c;沒有什么異常發生。然而&#…