真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

MySQL中文手冊下載地址:http://down.51cto.com/data/2244392

“專業(yè)、務(wù)實、高效、創(chuàng)新、把客戶的事當成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 創(chuàng)新互聯(lián)建站是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于網(wǎng)站建設(shè)、成都做網(wǎng)站、軟件開發(fā)、設(shè)計服務(wù)業(yè)務(wù)。我們始終堅持以客戶需求為導(dǎo)向,結(jié)合用戶體驗與視覺傳達,提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!

sql注入各種姿勢:http://wt7315.blog.51cto.com/10319657/1828167

sqlmap注入神器詳解:http://wt7315.blog.51cto.com/10319657/1841241

數(shù)據(jù)庫分為三種基本形式 : (其實這些都是眾所周知的,只是為了知識的完整性,簡單的帶過)

關(guān)系型數(shù)據(jù)庫

層次型數(shù)據(jù)庫

網(wǎng)狀型數(shù)據(jù)庫

運行在Linux系統(tǒng)上的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)主要產(chǎn)品:

企業(yè)級服務(wù)器:Oracle、Sybase、DB2

中小型服務(wù)器:MySQL、PostgreSQL

 

一、MySQL簡介和安裝

總體來說,MySQL數(shù)據(jù)庫管理系統(tǒng)具有以下主要特點:

①可以運行在不同平臺上,支持多用戶、多線程和多CPU,沒有內(nèi)存溢出漏洞;

②提供多種數(shù)據(jù)類型,支持ODBC、SSL、支持多種語言利用MySQL的API進行開發(fā);

③是目前市場上現(xiàn)有產(chǎn)品中運行速度最快的數(shù)據(jù)庫系統(tǒng);

④同時訪問數(shù)據(jù)庫的用戶數(shù)量不受限制;

⑤可以保存超過50,000,000條記錄;

⑥用戶權(quán)限設(shè)置簡單、有效。

 

 

查看系統(tǒng)中是否已安裝mysql軟件,若無任何顯示表明未安裝。

rpm -qa  *mysql*

 

將DVD安裝光盤放入光驅(qū),并將光驅(qū)掛載到/mnt目錄中。

mount  /dev/cdrom  /mnt

由于此主機既作為服務(wù)器端又作為客戶端,這里先安裝MySQL的客戶端安裝包,該安裝包的依賴軟件包是perl-DBI。MySQL的服務(wù)端安裝包還要依賴perl-DBD-MySQL軟件包

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

MySQL服務(wù)的啟動、停止、重啟和查詢啟動狀態(tài)
service  mysqld start|stop|restart|status

2.設(shè)置開機自動啟動的功能
chkconfig  --level  35  mysqld  on


3.設(shè)置MySQL數(shù)據(jù)庫root賬號的密碼
mysqladmin  -u 用戶名  [-h 服務(wù)器主機名或IP地址] [-p]  password  '新口令'
 
root用戶默認的空口令,先將root用戶的密碼設(shè)置為123,再將用戶root的密碼改為456。

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

登錄及退出MySQL環(huán)境
mysql -h 主機名或IP地址  -u 用戶名  -p 用戶密碼

 

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

接下來就是數(shù)據(jù)庫的知識了

二、數(shù)據(jù)庫管理

 

MySQL命令

功能

show  databases;

查看服務(wù)器中當前有哪些數(shù)據(jù)庫

use  數(shù)據(jù)庫名;

選擇所使用的數(shù)據(jù)庫

create database 數(shù)據(jù)庫名;

創(chuàng)建數(shù)據(jù)庫

drop database 數(shù)據(jù)庫名;

刪除指定的數(shù)據(jù)庫

 

mysql安裝后默認會創(chuàng)建三個數(shù)據(jù)庫information_schema、mysql和test,其中名為“mysql”的數(shù)據(jù)庫很重要,它里面保存有MYSQL的系統(tǒng)信息,用戶修改密碼和新增用戶,實際上就是針對該數(shù)據(jù)庫中的有關(guān)數(shù)據(jù)表進行操作。

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

 

看到information_schema,玩過mysql的手工注入的童鞋是不是很親切了

 

 

三、數(shù)據(jù)表結(jié)構(gòu)管理

MySQL命令

功能

create table 表名(字段設(shè)定列表);

在當前數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表

show  tables;

顯示當前數(shù)據(jù)庫中有哪些數(shù)據(jù)表

describe  [數(shù)據(jù)庫名.]表名;

顯示當前或指定數(shù)據(jù)庫中指定數(shù)據(jù)表的結(jié)構(gòu)(字段)信息

drop table [數(shù)據(jù)庫名.]表名;

drop table [數(shù)據(jù)庫名.]表名;

 

 

創(chuàng)建表的時候必須至少有一個列

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

四、記錄的查看、插入、修改與刪除


MySQL命令

功能

insert into 表名(字段1,字段2,……) values(字段1的值,字段2的值,……);

向數(shù)據(jù)表中插入新的記錄

update 表名set字段名1=字段值1[,字段名2=字段值2]  where條件表達式;

 

修改、更新數(shù)據(jù)表中的記錄

 

select 字段名1,字段名2……from表名where條件表達式;

 

從數(shù)據(jù)表中查找符合條件的記錄

 

select * from 表名;

 

顯示當前數(shù)據(jù)庫的表中的記錄

 

delete from 表名where條件表達式;

 

在數(shù)據(jù)表中刪除指定的記錄

 

delete from 表名;

 

將當前數(shù)據(jù)庫表中記錄清空

向wt庫wt表中插入id列,字段為17。

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

將wt庫wt表中的id列的字段更新為117.

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

五、用戶與權(quán)限管理


創(chuàng)建與授權(quán)用戶 grant  權(quán)限列表 on 數(shù)據(jù)庫名.表名 to 用戶名@來源地址 [identified by ‘密碼’]


                主要用戶權(quán)限

select

讀取表的數(shù)據(jù)

insert

向表中插入數(shù)據(jù)

update

更新表中的數(shù)據(jù)

delete

刪除表中的數(shù)據(jù)

index

創(chuàng)建或刪除表的索引

create

創(chuàng)建新的數(shù)據(jù)庫和表

alter

修改表的結(jié)構(gòu)

grant

將自己擁有的某些權(quán)限授予其他用戶

drop

刪除現(xiàn)存的數(shù)據(jù)庫和表

file

在數(shù)據(jù)庫服務(wù)器上讀取和寫入文件

reload

重新裝載授權(quán)表

process

查看當前執(zhí)行的查詢

shutdown

停止或關(guān)閉mysql服務(wù)

all

具有全部權(quán)限

 

1.增加一個名為test的MySQL用戶,允許其從本地主機(即MySQL數(shù)據(jù)庫所在的主機)上登錄,且只能對數(shù)據(jù)庫student進行查詢,用戶密碼設(shè)置為123456。


linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

驗證該用戶能進行登錄、查詢,無法做其他操作,和預(yù)想的是一樣的。

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

2.查看用戶的權(quán)限

show  grants  for  用戶名@域名或IP地址;

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

3.撤銷用戶的權(quán)限

revoke  權(quán)限列表  on 數(shù)據(jù)庫名.表名  from  用戶名@域名或IP地址;

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

六、數(shù)據(jù)庫的備份與恢復(fù)

 

(1).直接備份數(shù)據(jù)庫所在的目錄

使用cp、tar等命令直接備份數(shù)據(jù)庫所存放的目錄

2.使用mysqldump命令備份和恢復(fù)

mysqldump -u 用戶名 -p [密碼] [選項] [數(shù)據(jù)庫名] [表名] > /備份路徑/備份文件名

 

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

附:mysqldump的幾種常用方法:

 

(1)導(dǎo)出整個數(shù)據(jù)庫(包括數(shù)據(jù)庫中的數(shù)據(jù))

mysqldump -u username -p dbname > dbname.sql    

 

(2)導(dǎo)出數(shù)據(jù)庫結(jié)構(gòu)(不含數(shù)據(jù))

mysqldump -u username -p -d dbname > dbname.sql    

 

(3)導(dǎo)出數(shù)據(jù)庫中的某張數(shù)據(jù)表(包含數(shù)據(jù))

 mysqldump -u username -p dbname tablename > tablename.sql    

 

(4)導(dǎo)出數(shù)據(jù)庫中的某張數(shù)據(jù)表的表結(jié)構(gòu)(不含數(shù)據(jù))

mysqldump -u username -p -d dbname tablename > tablename.sql  

 

常用參數(shù)說明:

--all-databases——備份服務(wù)器中的所有數(shù)據(jù)庫內(nèi)容;

--opt——對備份過程進行優(yōu)化,此項為默認選項

 

 

 

(2.)恢復(fù)(導(dǎo)入)數(shù)據(jù)

mysql -u root -p [數(shù)據(jù)庫名] < /備份路徑/備份文件名

linux之mysql數(shù)據(jù)庫搭建及sql注入和防御

七、sql注入


SQL注入產(chǎn)生的原因,和棧溢出、XSS等很多其他的***方法類似,就是未經(jīng)檢查或者未經(jīng)充分檢查的用戶輸入數(shù)據(jù),意外變成了代碼被執(zhí)行。針對于SQL注入,則是用戶提交的數(shù)據(jù),被數(shù)據(jù)庫系統(tǒng)編譯而產(chǎn)生了開發(fā)者預(yù)期之外的動作。也就是,SQL注入是用戶輸入的數(shù)據(jù),在拼接SQL語句的過程中,超越了數(shù)據(jù)本身,成為了SQL語句查詢邏輯的一部分,然后這樣被拼接出來的SQL語句被數(shù)據(jù)庫執(zhí)行,產(chǎn)生了開發(fā)者預(yù)期之外的動作。

所以從根本上防止上述類型***的手段,還是避免數(shù)據(jù)變成代碼被執(zhí)行,時刻分清代碼和數(shù)據(jù)的界限。而具體到SQL注入來說,被執(zhí)行的惡意代碼是通過數(shù)據(jù)庫的SQL解釋引擎編譯得到的,所以只要避免用戶輸入的數(shù)據(jù)被數(shù)據(jù)庫系統(tǒng)編譯就可以了。

 

現(xiàn)在的數(shù)據(jù)庫系統(tǒng)都提供SQL語句的預(yù)編譯(prepare)和查詢參數(shù)綁定功能,在SQL語句中放置占位符'?',然后將帶有占位符的SQL語句傳給數(shù)據(jù)庫編譯,執(zhí)行的時候才將用戶輸入的數(shù)據(jù)作為執(zhí)行的參數(shù)傳給用戶。這樣的操作不僅使得SQL語句在書寫的時候不再需要拼接,看起來也更直接,而且用戶輸入的數(shù)據(jù)也沒有機會被送到數(shù)據(jù)庫的SQL解釋器被編譯執(zhí)行,也不會越權(quán)變成代碼。

 

 

如何確定SQL注入漏洞

通過以上的實例,我們?nèi)匀贿€會有疑問:***并不知道我們程序代碼的邏輯和SQL語句的寫法,他是如何確定一個網(wǎng)站是否存在SQL注入漏洞呢?一般說來有以下2種途徑:

 

1、錯誤提示

 

如果目標Web網(wǎng)站開啟了錯誤顯示,***者就可以通過反復(fù)調(diào)整發(fā)送的參數(shù)、查看頁面打印的錯誤信息,推測出Web網(wǎng)站使用的數(shù)據(jù)庫和開發(fā)語言等重要信息。

 

2、盲注

 

除非運維人員疏忽,否則大部分的Web運營網(wǎng)站應(yīng)該都關(guān)閉了錯誤提示信息,此時***者一般會采用盲注的技巧來進行反復(fù)的嘗試判斷。

之前對sql手工注入和sql注入神器sqlmap做過很詳細的介紹,這里就針對sql注入的理論做補充。詳細的sql注入姿勢請查看前面的文章。


防御SQL注入

對于服務(wù)器配置層面的防范,應(yīng)該保證生產(chǎn)環(huán)境的Webserver是關(guān)閉錯誤信息的,比如PHP在生產(chǎn)環(huán)境的配置文件php.ini中的display_errors應(yīng)該設(shè)置為Off,這樣就關(guān)閉了錯誤提示,下面我們更多的從編碼的角度來看看如何防范SQL注入。

 

但凡有SQL注入漏洞的程序,都是因為程序要接受來自客戶端用戶輸入的變量或URL傳遞的參數(shù),并且這個變量或參數(shù)是組成SQL語句的一部分,對于用戶輸入的內(nèi)容或傳遞的參數(shù),我們應(yīng)該要時刻保持警惕,這是安全領(lǐng)域里的「外部數(shù)據(jù)不可信任」的原則,縱觀Web安全領(lǐng)域的各種***方式,大多數(shù)都是因為開發(fā)者違反了這個原則而導(dǎo)致的,所以自然能想到的,就是從變量的檢測、過濾、驗證下手,確保變量是開發(fā)者所預(yù)想的。

 

1、檢查變量數(shù)據(jù)類型和格式

 

如果你的SQL語句是類似where id={$id}這種形式,數(shù)據(jù)庫里所有的id都是數(shù)字,那么就應(yīng)該在SQL被執(zhí)行前,檢查確保變量id是int類型;如果是接受郵箱,那就應(yīng)該檢查并嚴格確保變量一定是郵箱的格式,其他的類型比如日期、時間等也是一個道理??偨Y(jié)起來:只要是有固定格式的變量,在SQL語句執(zhí)行前,應(yīng)該嚴格按照固定格式去檢查,確保變量是我們預(yù)想的格式,這樣很大程度上可以避免SQL注入***。

 

2、過濾特殊符號

 

對于無法確定固定格式的變量,一定要進行特殊符號過濾或轉(zhuǎn)義處理。以PHP為例,通常是采用addslashes函數(shù),它會在指定的預(yù)定義字符前添加反斜杠轉(zhuǎn)義,這些預(yù)定義的字符是:單引號(')雙引號(")反斜杠(\) NULL。

 

3、綁定變量,使用預(yù)編譯語句

 

MySQL的mysqli驅(qū)動提供了預(yù)編譯語句的支持,不同的程序語言,都分別有使用預(yù)編譯語句的方法


4.數(shù)據(jù)庫信息加密安全

在Web開發(fā)中,傳統(tǒng)的加解密大致可以分為三種:

 

1、對稱加密:即加密方和解密方都使用相同的加密算法和密鑰,這種方案的密鑰的保存非常關(guān)鍵,因為算法是公開的,而密鑰是保密的,一旦密匙泄露,***仍然可以輕易解密。常見的對稱加密算法有:AES、DES等。

 

2、非對稱加密:即使用不同的密鑰來進行加解密,密鑰被分為公鑰和私鑰,用私鑰加密的數(shù)據(jù)必須使用公鑰來解密,同樣用公鑰加密的數(shù)據(jù)必須用對應(yīng)的私鑰來解密,常見的非對稱加密算法有:RSA等。

 

3、不可逆加密:利用哈希算法使數(shù)據(jù)加密之后無法解密回原數(shù)據(jù),這樣的哈希算法常用的有:md5、SHA-1等。

 

sql防御總結(jié)

1、不要隨意開啟生產(chǎn)環(huán)境中Webserver的錯誤顯示。

2、永遠不要信任來自用戶端的變量輸入,有固定格式的變量一定要嚴格檢查對應(yīng)的格式,沒有固定格式的變量需要對引號等特殊字符進行必要的過濾轉(zhuǎn)義。

3、使用預(yù)編譯綁定變量的SQL語句。

4、做好數(shù)據(jù)庫帳號權(quán)限管理。

5、嚴格加密處理用戶的機密信息。


分享題目:linux之mysql數(shù)據(jù)庫搭建及sql注入和防御
標題鏈接:http://weahome.cn/article/pdhoig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部