網(wǎng)站建設(shè)之mysql防止sql注入(成都網(wǎng)站建設(shè))

2024-05-01    分類: 網(wǎng)站建設(shè)

在網(wǎng)站建設(shè)的過程中,隨著時間的積累,數(shù)據(jù)庫的數(shù)據(jù)量越來越大,可以說,一個網(wǎng)站最重要的部分就是數(shù)據(jù),一旦數(shù)據(jù)泄漏,會對公司造成難以想像的影響,所以數(shù)據(jù)的安全行至關(guān)重要。任何一個網(wǎng)站都有一個后臺,方便對整個網(wǎng)站進(jìn)行管理。后臺往往有一個登錄系統(tǒng),這個登錄系統(tǒng),就很有可能通過一些方法直接驗證通過從而進(jìn)入你的后臺,導(dǎo)致我們網(wǎng)站數(shù)據(jù)泄漏。今天就給大家介紹一些方法,防止這種情況發(fā)生。具體操作如下:
首先我們來看產(chǎn)生結(jié)果的原因。
當(dāng)一個變量從表單傳入到php,需要查詢mysql的話,需要進(jìn)行處理。
舉例:
$unsafe_variable = $_POST@['user_input'];
mysqli_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')");
用戶可以輸入諸如 : value'); DROP TABLE table; ,SQL語句就變成這樣了:
INSERT INTO table (column) VALUES('value'); DROP TABLE table;')
執(zhí)行的結(jié)果就是table表被刪掉了。
這是一種常見的sql注入方法,那么在程序中,應(yīng)該怎樣預(yù)防呢?
方法一:mysql_real_escape_string()
由于addslashes()不檢測字符集,所以有寬字節(jié)注入風(fēng)險,所以php中添加了這個函數(shù)。
這個函數(shù)本來是mysql的擴(kuò)展,但是由于存在寬字節(jié)的問題,php基于mysql的擴(kuò)展開發(fā)了此函數(shù)。
mysql_real_escape_chars()是mysql_escape_chars()的替代用法。
與addslashes()相比,不僅會將' " \ NOL(ascii的0)轉(zhuǎn)義,還會把\r \n進(jìn)行轉(zhuǎn)義。同時會檢測數(shù)據(jù)編碼。
按php官方的描述,此函數(shù)可以安全的用于mysql。

方法二:預(yù)處理查詢 (Prepared Statements)
a. 先預(yù)發(fā)送一個sql模板過去
b. 再向mysql發(fā)送需要查詢的參數(shù)
就好像填空題一樣,不管參數(shù)怎么注入,mysql都能知道這是變量,不會做語義解析,起到防注入的效果,這是在mysql中完成的。
A.使用mysqli:prepare()實現(xiàn)
$mysqli = new mysqli("example.com", "user", "password", "database");
$stmt = $mysqli>prepare("SELECT id, label FROM test WHERE id = ?");
$stmt>bind_param(1, $city);
$stmt>execute();
$res = $stmt>get_result();
$row = $res>fetch_assoc();

B. 使用pdo實現(xiàn)

pdo是一個php官方推薦的數(shù)據(jù)庫抽象層,提供了很多實用的工具。
使用pdo的預(yù)處理參數(shù)化查詢可以有效防止sql注入。
使用方法跟上面差不多,區(qū)別在于pdo提供了更多樣的方法。使用這個pdo>$stmt對象進(jìn)行查詢后,會被結(jié)果集覆蓋,類型是一個二維數(shù)組。

方法三:html輸出與防止xss注入
特殊字符輸出
比如' " < >有著特殊的意義,如果直接寫到html中輸出,會引起dom格式的錯亂,那么就需要用到特殊的輸出方法。

最后,希望可以幫到大家。

     

以上就是關(guān)于網(wǎng)站建設(shè)之mysql防止sql注入(成都網(wǎng)站建設(shè)),希望對你有幫助,更多內(nèi)容關(guān)注創(chuàng)新互聯(lián)。

分享標(biāo)題:網(wǎng)站建設(shè)之mysql防止sql注入(成都網(wǎng)站建設(shè))
網(wǎng)站網(wǎng)址:http://www.bm7419.com/news27/327177.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、全網(wǎng)營銷推廣、自適應(yīng)網(wǎng)站、服務(wù)器托管網(wǎng)站排名、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化