最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
php如何做數(shù)據(jù)庫(kù)攻擊 php數(shù)據(jù)庫(kù)編程

如何實(shí)現(xiàn)php的安全最大化?怎樣避免sql注入漏洞和xss跨站腳本攻擊漏洞

使用php安全模式

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了網(wǎng)站制作、做網(wǎng)站,成都網(wǎng)站設(shè)計(jì),廣告投放平臺(tái),成都做網(wǎng)站選創(chuàng)新互聯(lián)建站,貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。

服務(wù)器要做好管理,賬號(hào)權(quán)限是否合理。

假定所有用戶的輸入都是“惡意”的,防止XSS攻擊,譬如:對(duì)用戶的輸入輸出做好必要的過濾

防止CSRF,表單設(shè)置隱藏域,post一個(gè)隨機(jī)字符串到后臺(tái),可以有效防止跨站請(qǐng)求偽造。

文件上傳,檢查是否做好效驗(yàn),要注意上傳文件存儲(chǔ)目錄權(quán)限。

防御SQL注入。?

避免SQL注入漏洞

1.使用預(yù)編譯語(yǔ)句

2.使用安全的存儲(chǔ)過程

3.檢查輸入數(shù)據(jù)的數(shù)據(jù)類型

4.從數(shù)據(jù)庫(kù)自身的角度考慮,應(yīng)該使用最小權(quán)限原則,不可使用root或dbowner的身份連接數(shù)據(jù)庫(kù)。若多個(gè)應(yīng)用使用同一個(gè)數(shù)據(jù)庫(kù),也應(yīng)該為數(shù)據(jù)庫(kù)分配不同的賬戶。web應(yīng)用使用的數(shù)據(jù)庫(kù)賬戶,不應(yīng)該有創(chuàng)建自定義函數(shù),操作本地文件的權(quán)限。

避免XSS跨站腳本攻擊

1.假定所有用戶輸入都是“邪惡”的

2.考慮周全的正則表達(dá)式

3.為cookie設(shè)置HttpOnly,防止cookie劫持

4.外部js不一定可靠

5.出去不必要的HTML注釋

6. 針對(duì)非法的HTML代碼包括單雙引號(hào)等,使用htmlspecialchars()函數(shù)。

PHP的網(wǎng)站主要攻擊方式有哪些

1、命令注入(Command Injection)

2、eval注入(Eval Injection)

3、客戶端腳本攻擊(Script Insertion)

4、跨網(wǎng)站腳本攻擊(Cross Site Scripting, XSS)

5、SQL注入攻擊(SQL injection)

6、跨網(wǎng)站請(qǐng)求偽造攻擊(Cross Site Request Forgeries, CSRF)

7、Session 會(huì)話劫持(Session Hijacking)

8、Session 固定攻擊(Session Fixation)

9、HTTP響應(yīng)拆分攻擊(HTTP Response Splitting)

10、文件上傳漏洞(File Upload Attack)

11、目錄穿越漏洞(Directory Traversal)

12、遠(yuǎn)程文件包含攻擊(Remote Inclusion)

13、動(dòng)態(tài)函數(shù)注入攻擊(Dynamic Variable Evaluation)

14、URL攻擊(URL attack)

15、表單提交欺騙攻擊(Spoofed Form Submissions)

16、HTTP請(qǐng)求欺騙攻擊(Spoofed HTTP Requests)

PHP如何做好最基礎(chǔ)的安全防范

PHP如何做好最基礎(chǔ)的安全防范

php給了開發(fā)者極大的靈活性,但是這也為安全問題帶來(lái)了潛在的隱患,PHP如何做好最基礎(chǔ)的安全防范呢?下面我為大家解答一下,希望能幫到您!

當(dāng)開發(fā)一個(gè)互聯(lián)網(wǎng)服務(wù)的時(shí)候,必須時(shí)刻牢記安全觀念,并在開發(fā)的代碼中體現(xiàn)。PHP腳本語(yǔ)言對(duì)安全問題并不關(guān)心,特別是對(duì)大多數(shù)沒有經(jīng)驗(yàn)的開發(fā)者來(lái)說。每當(dāng)你講任何涉及到錢財(cái)事務(wù)等交易問題時(shí),需要特別注意安全問題的考慮,例如開發(fā)一個(gè)論壇或者是一個(gè)購(gòu)物車等。

   安全保護(hù)一般性要點(diǎn)

不相信表單

對(duì)于一般的Javascript前臺(tái)驗(yàn)證,由于無(wú)法得知用戶的行為,例如關(guān)閉了瀏覽器的javascript引擎,這樣通過POST惡意數(shù)據(jù)到服務(wù)器。需要在服務(wù)器端進(jìn)行驗(yàn)證,對(duì)每個(gè)php腳本驗(yàn)證傳遞到的數(shù)據(jù),防止XSS攻擊和SQL注入。

不相信用戶

要假設(shè)你的網(wǎng)站接收的每一條數(shù)據(jù)都是存在惡意代碼的,存在隱藏的威脅,要對(duì)每一條數(shù)據(jù)都進(jìn)行清理

   關(guān)閉全局變量

在php.ini文件中進(jìn)行以下配置:

register_globals = Off

如果這個(gè)配置選項(xiàng)打開之后,會(huì)出現(xiàn)很大的安全隱患。例如有一個(gè)process.php的腳本文件,會(huì)將接收到的數(shù)據(jù)插入到數(shù)據(jù)庫(kù),接收用戶輸入數(shù)據(jù)的表單可能如下:

input name="username" type ="text" size = "15" maxlength = "64"

這樣,當(dāng)提交數(shù)據(jù)到process.php之后,php會(huì)注冊(cè)一個(gè)$username變量,將這個(gè)變量數(shù)據(jù)提交到process.php,同時(shí)對(duì)于任何POST或GET請(qǐng)求參數(shù),都會(huì)設(shè)置這樣的變量。如果不是顯示進(jìn)行初始化那么就會(huì)出現(xiàn)下面的問題:

?php

// Define $authorized = true only if user is authenticated

if

(authenticated_user()) {

$authorized = true;

}

?

此處,假設(shè)authenticated_user函數(shù)就是判斷$authorized變量的值,如果開啟了register_globals配置,那么任何用戶都可以發(fā)送一個(gè)請(qǐng)求,來(lái)設(shè)置$authorized變量的值為任意值從而就能繞過這個(gè)驗(yàn)證。所有的這些提交數(shù)據(jù)都應(yīng)該通過PHP預(yù)定義內(nèi)置的全局?jǐn)?shù)組來(lái)獲取,包括$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,其中$_REQUEST是一個(gè)$_GET/$_POST/$_COOKIE三個(gè)數(shù)組的聯(lián)合變量,默認(rèn)的順序是$_COOKIE、$_POST、$_GET。

推薦的安全配置選項(xiàng)

error_reporting設(shè)置為Off:不要暴露錯(cuò)誤信息給用戶,開發(fā)的時(shí)候可以設(shè)置為ON

safe_mode設(shè)置為Off

register_globals設(shè)置為Off

將以下函數(shù)禁用:system、exec、passthru、shell_exec、proc_open、popen

open_basedir設(shè)置為 /tmp ,這樣可以讓session信息有存儲(chǔ)權(quán)限,同時(shí)設(shè)置單獨(dú)的網(wǎng)站根目錄expose_php設(shè)置為Offallow_url_fopen設(shè)置為Offallow_url_include設(shè)置為Off

SQL注入攻擊

對(duì)于操作數(shù)據(jù)庫(kù)的SQL語(yǔ)句,需要特別注意安全性,因?yàn)橛脩艨赡茌斎胩囟ㄕZ(yǔ)句使得原有的SQL語(yǔ)句改變了功能。類似下面的例子:

$sql ="select * from pinfo where product = '$product'";

此時(shí)如果用戶輸入的$product參數(shù)為:'39'; DROP pinfo; SELECT 'FOO

那么最終SQL語(yǔ)句就變成了如下的`樣子:

select product from pinfo where product = '39';

DROP pinfo;

SELECT 'FOO'

這樣就會(huì)變成三條SQL語(yǔ)句,會(huì)造成pinfo表被刪除,這樣會(huì)造成嚴(yán)重的后果。這個(gè)問題可以簡(jiǎn)單的使用PHP的內(nèi)置函數(shù)解決:

$sql = 'Select * from pinfo where product = '"' mysql_real_escape_string($product) . '"';

防止SQL注入攻擊需要做好兩件事:對(duì)輸入的參數(shù)總是進(jìn)行類型驗(yàn)證對(duì)單引號(hào)、雙引號(hào)、反引號(hào)等特殊字符總是使用mysql_real_escape_string函數(shù)進(jìn)行轉(zhuǎn)義但是,這里根據(jù)開發(fā)經(jīng)驗(yàn),不要開啟php的Magic Quotes,這個(gè)特性在php6中已經(jīng)廢除,總是自己在需要的時(shí)候進(jìn)行轉(zhuǎn)義。

防止基本的XSS攻擊

XSS攻擊不像其他攻擊,這種攻擊在客戶端進(jìn)行,最基本的XSS工具就是防止一段javascript腳本在用戶待提交的表單頁(yè)面,將用戶提交的數(shù)據(jù)和cookie偷取過來(lái)。XSS工具比SQL注入更加難以防護(hù),各大公司網(wǎng)站都被XSS攻擊過,雖然這種攻擊與php語(yǔ)言無(wú)關(guān),但可以使用php來(lái)篩選用戶數(shù)據(jù)達(dá)到保護(hù)用戶數(shù)據(jù)的目的,這里主要使用的是對(duì)用戶的數(shù)據(jù)進(jìn)行過濾,一般過濾掉HTML標(biāo)簽,特別是a標(biāo)簽。下面是一個(gè)普通的過濾方法:

function transform_HTML( $string , $length null) { // Helps prevent XSS attacks

// Remove dead space.

$string = trim( $string );

// Prevent potential Unicode codec problems.

$string = utf8_decode( $string );

// HTMLize HTML-specific characters.

$string = htmlentities( $string , ENT_NOQUOTES);

$string = str_replace ( "#" , "#" , $string );

$string = str_replace ( "%" , "%" , $string );

$length = intval ( $length );

if ( $length 0) {

$string = substr ( $string , 0, $length );

}return $string ;

}

這個(gè)函數(shù)將HTML的特殊字符轉(zhuǎn)換為了HTML實(shí)體,瀏覽器在渲染這段文本的時(shí)候以純文本形式顯示。如bold會(huì)被顯示為: BoldText 上述函數(shù)的核心就是htmlentities函數(shù),這個(gè)函數(shù)將html特殊標(biāo)簽轉(zhuǎn)換為html實(shí)體字符,這樣可以過濾大部分的XSS攻擊。但是對(duì)于有經(jīng)驗(yàn)的XSS攻擊者,有更加巧妙的辦法進(jìn)行攻擊:將他們的惡意代碼使用十六進(jìn)制或者utf-8編碼,而不是普通的ASCII文本,例如可以使用下面的方式進(jìn)行:

   這樣瀏覽器渲染的結(jié)果其實(shí)是:

a href = ""

SCRIPT Dosomethingmalicious

這樣就達(dá)到了攻擊的目的。為了防止這種情況,需要在transform_HTML函數(shù)的基礎(chǔ)上再將#和%轉(zhuǎn)換為他們對(duì)應(yīng)的實(shí)體符號(hào),同時(shí)加上了$length參數(shù)來(lái)限制提交的數(shù)據(jù)的最大長(zhǎng)度。

   使用SafeHTML防止XSS攻擊

上述關(guān)于XSS攻擊的防護(hù)非常簡(jiǎn)單,但是不包含用戶的所有標(biāo)記,同時(shí)有上百種繞過過濾函數(shù)提交javascript代碼的方法,也沒有辦法能完全阻止這個(gè)情況。目前,沒有一個(gè)單一的腳本能保證不被攻擊突破,但是總有相對(duì)來(lái)說防護(hù)程度更好的。一共有兩個(gè)安全防護(hù)的方式:白名單和黑名單。其中白名單更加簡(jiǎn)單和有效。一種白名單解決方案就是SafeHTML,它足夠智能能夠識(shí)別有效的HTML,然后就可以去除任何危險(xiǎn)的標(biāo)簽。這個(gè)需要基于HTMLSax包來(lái)進(jìn)行解析。安裝使用SafeHTML的方法:

1、前往 下載最新的SafeHTML

2、將文件放入服務(wù)器的classes 目錄,這個(gè)目錄包含所有的SafeHTML和HTMLSax庫(kù)

3、在自己的腳本中包含SafeHTML類文件

4、建立一個(gè)SafeHTML對(duì)象

5、使用parse方法進(jìn)行過濾

?php/* If you're storing the HTMLSax3.php in the /classes directory, along

with the safehtml.php script, define XML_HTMLSAX3 as a null string. */define(XML_HTMLSAX3, '' );// Include the class file.require_once ( 'classes/safehtml.php' );

// Define some sample bad code.

$data = This data would raise an alert

" ;// Create a safehtml object.$safehtml = new safehtml();// Parse and sanitize the data.$safe_data = $safehtml -parse( $data );// Display result. echo 'The sanitized data is ' . $safe_data ;

?

SafeHTML并不能完全防止XSS攻擊,只是一個(gè)相對(duì)復(fù)雜的腳本來(lái)檢驗(yàn)的方式。

使用單向HASH加密方式來(lái)保護(hù)數(shù)據(jù)

單向hash加密保證對(duì)每個(gè)用戶的密碼都是唯一的,而且不能被破譯的,只有最終用戶知道密碼,系統(tǒng)也是不知道原始密碼的。這樣的一個(gè)好處是在系統(tǒng)被攻擊后攻擊者也無(wú)法知道原始密碼數(shù)據(jù)。加密和Hash是不同的兩個(gè)過程。與加密不同,Hash是無(wú)法被解密的,是單向的;同時(shí)兩個(gè)不同的字符串可能會(huì)得到同一個(gè)hash值,并不能保證hash值的唯一性。MD5函數(shù)處理過的hash值基本不能被破解,但是總是有可能性的,而且網(wǎng)上也有MD5的hash字典。

使用mcrypt加密數(shù)據(jù)MD5 hash函數(shù)可以在可讀的表單中顯示數(shù)據(jù),但是對(duì)于存儲(chǔ)用戶的信用卡信息的時(shí)候,需要進(jìn)行加密處理后存儲(chǔ),并且需要之后進(jìn)行解密。最好的方法是使用mcrypt模塊,這個(gè)模塊包含了超過30中加密方式來(lái)保證只有加密者才能解密數(shù)據(jù)。

?php$data = "Stuff you want encrypted" ;

$key = "Secret passphrase used to encrypt your data" ;

$cipher = "MCRYPT_SERPENT_256" $mode = "MCRYPT_MODE_CBC" ;function encrypt( $data, $key , cipher , $mode ) {// Encrypt datareturn (string) base64_encode ( mcrypt_encrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), $data , $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) ) );

}function decrypt( $data , $key ,$cipher , $mode ) {// Decrypt data

return (string) mcrypt_decrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), base64_decode ( $data ), $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) );

}?

mcrypt函數(shù)需要以下信息:

1、待加密數(shù)據(jù)

2、用來(lái)加密和解密數(shù)據(jù)的key

3、用戶選擇的加密數(shù)據(jù)的特定算法(cipher:

如 MCRYPT_TWOFISH192

,MCRYPT_SERPENT_256, MCRYPT_RC2

, MCRYPT_DES

, and MCRYPT_LOKI97

4、用來(lái)加密的模式

5、加密的種子,用來(lái)起始加密過程的數(shù)據(jù),是一個(gè)額外的二進(jìn)制數(shù)據(jù)用來(lái)初始化加密算法

6、加密key和種子的長(zhǎng)度,使用mcrypt_get_key_size函數(shù)和mcrypt_get_block_size函數(shù)可以獲取如果數(shù)據(jù)和key都被盜取,那么攻擊者可以遍歷ciphers尋找開行的方式即可,因此我們需要將加密的key進(jìn)行MD5一次后保證安全性。同時(shí)由于mcrypt函數(shù)返回的加密數(shù)據(jù)是一個(gè)二進(jìn)制數(shù)據(jù),這樣保存到數(shù)據(jù)庫(kù)字段中會(huì)引起其他錯(cuò)誤,使用了base64encode將這些數(shù)據(jù)轉(zhuǎn)換為了十六進(jìn)制數(shù)方便保存。

;

如何在不刷新php頁(yè)面的情況下,用php執(zhí)行一些數(shù)據(jù)庫(kù)操作

建議使用Jquery的ajax,比較方便!

其實(shí)使用js的ajax,你也需要建立例外一個(gè)php文件,不同的是,這個(gè)文件會(huì)在后臺(tái)運(yùn)行,你是看不到的,當(dāng)前頁(yè)面也無(wú)需刷新和提交!

這樣就達(dá)到了你的要求!


本文名稱:php如何做數(shù)據(jù)庫(kù)攻擊 php數(shù)據(jù)庫(kù)編程
標(biāo)題鏈接:http://fisionsoft.com.cn/article/doedccc.html