日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击

發(fā)布時(shí)間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SQL注入攻擊大多數(shù)與程序有關(guān)系,程序不嚴(yán)謹(jǐn)是導(dǎo)致SQL注入攻擊成功的一個(gè)原因。安全問題不容忽視,平常的開發(fā)中應(yīng)關(guān)注安全問題。下面簡單記錄PHP中的SQL攻擊問題。

什么是SQL注入攻擊

SQL注入(SQL Injection)是利用某些數(shù)據(jù)庫的外部接口將用戶數(shù)據(jù)插入到實(shí)際的數(shù)據(jù)庫操作語言(SQL)當(dāng)中,從而達(dá)到入侵?jǐn)?shù)據(jù)庫甚至是操作系統(tǒng)的目的。SQL注入攻擊產(chǎn)生的原因是由于程序?qū)τ脩糨斎氲臄?shù)據(jù)沒有嚴(yán)格過濾,導(dǎo)致非法數(shù)據(jù)庫查詢語句的執(zhí)行。

PHP案例演示SQL注入攻擊

正常演示

下面將使用PHP進(jìn)行簡單的SQL注入攻擊演示,因此沒有多大的代碼嚴(yán)謹(jǐn)度,只為演示SQL注入。

// test.php<?php

$conn?=?mysqli_connect('localhost','root','123456','demo');

if?(!$conn)?{

exit('數(shù)據(jù)庫連接失敗?'.?mysqli_connect_error());

}

$name?=?$_GET['name'];

$password?=?$_GET['password'];

#?重點(diǎn)在于sql語句

$sql?=?"select?*?from?user?where?name='$name'?and?password='$password'";

$result?=?mysqli_query($conn,?$sql);

$userinfo?=?mysqli_fetch_array($result);

if?(empty($userinfo))?{

echo?'登錄失敗';

}?else?{

echo?'登錄成功';

}

echo?"

SQL語句:?$sql?

";

第一:進(jìn)行一次正確和錯(cuò)誤的用戶名與密碼進(jìn)行登錄測試。#?表單中分別輸入正確與錯(cuò)誤的用戶名與密碼

#?可以看到用戶名與密碼正確時(shí)正常登錄

登錄成功

SQL語句:?select?*?from?user?where?name='lisi'?and?password='123456'

#?可以看到結(jié)果,登錄失敗了

登錄失敗

SQL語句:?select?*?from?user?where?name='lisi1'?and?password='1234561'注意:需要在地址欄輸入訪問

SQL注入攻擊演示

重頭戲來了,SQL注入攻擊。

注入一:用戶名表單中填入lisi' or '1=1,密碼可填可不填寫

注入二:用戶名表單中填入lii'#,密碼可填可不填登錄成功

SQL語句:?select?*?from?user?where?name='lisi'?or?'1=1'?and?password=''

登錄成功

SQL語句:?select?*?from?user?where?name='lisi'?#'?and?password=''

很明顯的可以看到,竟然登錄成功了,我的天,登錄沒有密碼竟然登錄成功了!有些慌呀,有木有。

既然有攻擊,那就有防范,下面就利用PHP內(nèi)置函數(shù)對(duì)SQL注入進(jìn)行防范。

預(yù)防SQL注入攻擊

針對(duì)字符串注入攻擊,可以在SQL語句中限制特殊符號(hào):單引號(hào),雙引號(hào),注釋等,已知非法符號(hào)有:'、"、;、=、(、)、/*、*/、%、+、>、

方式一:使用正則表達(dá)式$res?=?"/^[a-zA-Z0-9]{6}$/";

if?(empty($name)?||?empty($password)?||?!preg_match($res,?$name))?{

die('非法登錄');

}

方式二:使用PHP內(nèi)置函數(shù)過濾和轉(zhuǎn)義字符串$name?=?$_POST['name'];

$name=addslashes($name);

$name=str_replace("%","\%",$name);

$name=str_replace("_","\_",$name);

結(jié)果登錄失敗

SQL語句:?select?*?from?user?where?name='lisi\'?or?\'1=1\''?and?password=''

我是小白,期待和優(yōu)秀的你一起同行!

小白

2020年11月26日

轉(zhuǎn)載:感謝您對(duì)自如初博客網(wǎng)站的認(rèn)可,所有文章均屬原創(chuàng)文章,技術(shù)類文章轉(zhuǎn)載請注明出處,“自如初博客”;文學(xué)類文章請帶文本鏈接地址,否則視為侵權(quán)!

很贊哦!(6)

總結(jié)

以上是生活随笔為你收集整理的mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。