萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql sql防注入簡介與防注入實例

mysql sql防注入簡介與防注入實例

sql注入原理以及sql防注入的措施,最後給出了一個php實例來告訴你如何做mysql防注入方法,以後一些常用的處理方法。

下面我們根據我編程序的經驗來寫一篇關於mysql教程 sql防注入簡介與防注入實例吧。

sql防注入簡介:

sql查詢是一種用來數據與用戶進行交互的文本語言,sql利用外部接將用戶提交的數據發送給mysql數據庫教程服務器進行處理,如果沒有嚴密的過濾,可能導致數據丟失,如被刪除,修改,而這樣問題是網絡管理員很難做事的,他們不能通過打系統被丁,或安裝防火強可以控制了,。

下面我們來看一個簡單的用戶登陸實例。

一,創建用戶表user

create table user (

userid(int) not null auto_increment,

username not null default'',

userpass not null default '',

primary key(userid)

)type= myisam auto_increment=1;

好表就創建成功了。我們先給用戶表user插入一條記錄

insert into 'user' values(1,'www.111cn.net','123456');

現在來做用戶登陸代碼

<?php教程

$root ='localhost';

$dbName='root';

$dbpwd ='123456';

$db = 'userdb';

mysql_connect($root,$dbName,$dbpwd) or die('數據庫連接失敗');

$sql ="select * from user where username='$username"  and password='$pwd';

$result =mysql_db_query($db,$sql);

$ufo = mysql_fetch_array( $result );

if( $ufo )

{

echo '登陸成功';

}

else

{

echo '登陸失敗';

}

好現在我們來做一個實例提供一個url給上面的php處理頁面

http://www.111cn.net/test/a.php?user=www.111cn.net' or '  1= 1;

結果發現這條sql可以成功登陸我們的系統,而不是我想要的密碼等12346,好下面我們再來看個實例

http://www.111cn.net/test/a.php?user=www.111cn.net' /*;

http://www.111cn.net/test/a.php?user=www.111cn.net' or ' #;

這樣只要用戶名正確同樣可以登陸系統,在sql語句中/*與#是注掉後面的sql,

好了,根據上面的問題我們寫了一個自定義函數來過濾大部sql注入的防注入函數

function safesql()

{

$re = "/(|'%27|;|(%3d)|(|(%28)|)|(%29)|(/*)|(%2f%2a)|(%2a%2f)|+|(%2b)|(<|(%3e)|(%3e)|(--))|[|%5d)/";

if( preg_match( $re ,$username)

{

echo'請不要非法sql注入';

exit;

}

else

{

return turn;

}

最後總結一下:

注明:本站原創文章轉載注明來源www.111cn.net

copyright © 萬盛學電腦網 all rights reserved