phpxss跨站腳本漏洞
❶ 如何實現php的安全最大化怎樣避免sql注入漏洞和xss跨站腳本攻擊漏洞
使用php安全模式
伺服器要做好管理,賬號許可權是否合理。
假定所有用戶的輸入都是「惡意」的,防止XSS攻擊,譬如:對用戶的輸入輸出做好必要的過濾
防止CSRF,表單設置隱藏域,post一個隨機字元串到後台,可以有效防止跨站請求偽造。
防禦SQL注入。
避免SQL注入漏洞
1.使用預編譯語句
2.使用安全的存儲過程
3.檢查輸入數據的數據類型
4.從資料庫自身的角度考慮,應該使用最小許可權原則,不可使用root或dbowner的身份連接資料庫。若多個應用使用同一個資料庫,也應該為資料庫分配不同的賬戶。web應用使用的資料庫賬戶,不應該有創建自定義函數,操作本地文件的許可權。
避免XSS跨站腳本攻擊
1.假定所有用戶輸入都是「邪惡」的
2.考慮周全的正則表達式
3.為cookie設置HttpOnly,防止cookie劫持
4.外部js不一定可靠
5.出去不必要的HTML注釋
6. 針對非法的HTML代碼包括單雙引號等,使用htmlspecialchars()函數。
❷ XSS(跨站腳本漏洞)誰幫忙修復下,我看著就頭大,一竅不通啊。
對於php你可以用htmlentities()函數
例如這樣:
<?php
echo htmlentities($_POST['abc']);
?>
至於asp,默認就能防xss攻擊,無需任何操作
❸ 電腦發現漏洞怎麼修復不了
造成這個情況的原因有很多。比如修復之後沒有將電腦重啟,或者電腦缺少一些文件導致修復失敗。那麼解決方法就是找到缺失的文件重新修復下,然後將電腦重啟下即可。
❹ 什麼是phpinfo xss跨站腳本攻擊漏洞
php是一款被廣泛使用的編程語言,可以被嵌套在html里用做web程序開發。phpinfo()是用來顯示當前php環境的一個函數,許多站點和程序都會將phpinfo放在自己的站點上或者在程序里顯示,但是phpinfo里存在一些安全問題,導致精心構造數據就可以產生一個跨站腳本漏洞,可以被用來進行攻擊。
漏洞成因: phpinfo頁面對輸入的參數都做了詳細的過濾,但是沒有對輸出的進行charset的指定,而在一些瀏覽器里如IE7里,你可以讓它自動選擇編碼或者通過一個iframe頁面給它指定編碼,這樣就可以饒過phpinfo的過濾而產生一個跨站腳本漏洞。
漏洞來源: http://www.80sec.com/release/phpinfo-xss.txt
漏洞利用: 利用代碼如下:
<html>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7">
</head>
<body>
<iframe src="http://www.80sec.com/phpinfo.php?+ADw-SCRIPT+AD4-alert(document.domain);+ADw-/SCRIPT+AD4-=1">
以上代碼在IE7+php 5.2.6測試成功。phpinfo頁面的xss甚至比其他頁面更加危險,因為如果有phpinfo的存在,惡意攻擊者可以利用phpinfo的輸出bypass如httponly和一些基礎認證。
漏洞影響: 影響所有版本的php和瀏覽器IE7
漏洞修補: 建議暫時刪除站點的phpinfo頁面避免被人利用。
❺ 如何修復Discuz portal.php XSS漏洞
你只要安裝360安全衛士,用它的漏洞修復功能修復就可以了。
❻ 如何測試XSS漏洞
XSS跨站漏洞分為大致三種:儲存型XSS,反射型XSS,和DOM型XSS,一般都是由於網站對用戶輸入的參數過濾不嚴格而調用瀏覽器的JS而產生的。XSS幾乎每個網站都存在,google,網路,360等都存在,存在和危害范圍廣,危害安全性大。
具體利用的話:
儲存型XSS,一般是構造一個比如說"<script>alert("XSS")</script>"的JS的彈窗代碼進行測試,看是否提交後在頁面彈窗,這種儲存型XSS是被寫入到頁面當中的,如果管理員不處理,那麼將永久存在,這種XSS攻擊者可以通過留言等提交方式,把惡意代碼植入到伺服器網站上, 一般用於盜取COOKIE獲取管理員的信息和許可權。
反射型XSS,一般是在瀏覽器的輸入欄也就是urlget請求那裡輸入XSS代碼,例如:127.0.0.1/admin.php?key="><script>alert("xss")</script>,也是彈窗JS代碼。當攻擊者發送一個帶有XSS代碼的url參數給受害者,那麼受害者可能會使自己的cookie被盜取或者「彈框「,這種XSS一次性使用,危害比儲存型要小很多。
dom型:常用於挖掘,是因為api代碼審計不嚴所產生的,這種dom的XSS彈窗可利用和危害性並不是很大,大多用於釣魚。比起存儲型和反射型,DOM型並不常用。
缺點:
1、耗時間
2、有一定幾率不成功
3、沒有相應的軟體來完成自動化攻擊
4、前期需要基本的html、js功底,後期需要扎實的html、js、actionscript2/3.0等語言的功底
5、是一種被動的攻擊手法
6、對website有http-only、crossdomian.xml沒有用
所以樓主如果想更加深層次的學習XSS的話,最好有扎實的前後端開發基礎,還要學會代碼審計等等。
推薦的話,書籍建議看看《白帽子講web安全》,《XSS跨站腳本攻擊剖析與防禦》
一般配合的話,kalilinux裡面的BEFF是個很著名的XSS漏洞利用工具,樓主有興趣可以去看看。
純手工打字,望樓主採納。
❼ 如何修復wordpress4.0跨站腳本執行漏洞
WordPress是著名的開源CMS(內容管理)系統。近日,在4.0版本以下的Wordpress被發現存在跨站腳本漏洞(XSS),新版本的Wordpress已經修復了這些問題。為了安全起見,建議站長們盡早更新到WP新版本。 該漏洞是由芬蘭IT公司Klikki Oy的CEO Jouko Pynnonen發現的,只存在於Wordpress4.0以下的版本中。據調查得知全球有86%的Wordpress網站都感染了這一漏洞,也就意味著全球數百萬的網站都存在著潛在的危險。一些知名網站也使用了Wordpress軟體,如Time、UPS、NBC Sports、CNN、Techcrunch 和FreeBuf:) 漏洞概述 WordPress中存在一系列的跨站腳本漏洞,攻擊者利用跨站腳本偽造請求以欺騙用戶更改登錄密碼,或者盜取管理員許可權。 如Jouko Pynnonen解釋道: 當博客管理員查看評論時,評論中的漏洞代碼會自動在其Web瀏覽器上運行。然後惡意代碼會偷偷接管管理員賬戶,從而執行管理員操作。 為了證明他們的觀點,研究人員創建了一個漏洞利用程序(exploits)。利用這個exploits,他們創建了一個新的WordPress管理員賬戶,改變了當前管理員密碼,並在伺服器上執行了攻擊PHP代碼。 漏洞分析 問題出在wordpress的留言處,通常情況下留言是允許一些html標簽的,比如、、等等,然而標簽中有一些屬性是在白名單里的,比如標簽允許href屬性,但是onmouseover屬性是不允許的。 但是在一個字元串格式化函數wptexturize()上出現了問題,這個函數會在每一個留言上執行,函數的功能是把當前的字元轉義成html實體,比如把「」轉義為「」。為了防止干擾html格式,wptexturize()首先會以html標簽為標准把文本分成若干段,除了html標簽,還有方括弧標簽比如[code]。分割的功能是由下列正則表達式完成的。 在wp-includes/formatting.php代碼的第156行: $textarr = preg_split(『/(<.*>|\[.*\])/Us』, $text, -1, PREG_SPLIT_DELIM_CAPTURE); 但是如果文章中混合著尖括弧<>和方括弧[]會造成轉義混淆,導致部分代碼沒有轉義。 攻擊者可以通過這個漏洞在允許的HTML標簽中注入樣式參數形成XSS攻擊,比如通過建立一個透明的標簽覆蓋窗口,捕捉onmouseover事件。 漏洞利用測試 以下代碼可以用於測試 [[」 NOT VULNERABLE] 修復建議 這一漏洞很容易被攻擊者利用,WordPress官方建議用戶盡快更新補丁,而在新版WordPress 4.0.1已經修復了所有的漏洞。 WordPress官方於11月20日發布了官方補丁,目前大多數的WordPress網站上都會收到補丁更新提醒通知;如果有一些其他原因使得你無法更新補丁,Klikki Oy公司還提供了另外一個解決方案(workaround)可以修復該漏洞。 wptexturize可以通過在wp-includes/formatting.php開頭增加一個返回參數避免這個問題: function wptexturize($text) { return $text; // ADD THIS LINE global $wp_cockneyreplace; 額外提醒 如果你使用的是WP-Statistics WordPress插件,你也應該更新補丁。因為這些插件上也存在跨站腳本漏洞,攻擊者同樣可以實施攻擊。
❽ php防止sql注入以及xss跨站腳本攻擊
1.post數據
封裝轉義函數 防sql注入 eag:addslashes($username);addslashes($password);
eag:防止sql注入函數封裝
function deepslashes($data){
#判斷$data的表現形式 並且需要處理空的情況
if(empty($data)){
return($data);
}
#高級簡寫 return is_array($data) ? array_map('deepslashes',$data) : addslashes($data);
#初級寫法
if(is_array($data)){
#遞歸循環遍歷處理多維數組
foreach ($data as $v) {
return deepslashes($v);
}
}else{
#單一變數
return addslashes($data);
}
#初級寫法
}
2.get數據
指url 傳參數導致sql發生改變
解決方案
①強制轉換,使用函數intval 或者 數據類型 的關鍵字int
②隱式轉換,通過運算,只需要+0即可
3.xss跨站腳本攻擊
指惡意攻擊向web頁面插入html、js標簽導致頁面出現錯誤
解決方案
轉義標簽'<' '>'即可,有以下php函數可解決
htmlspecialchars 函數 和 htmlentites函數
eag:
function deepslashes($data){
#判斷$data的表現形式 並且需要處理空的情況
if(empty($data)){
return($data);
}
return is_array($data) ? array_map('deepslashes',$data) : htmlspecialchars ($data);
}
❾ 如何防止跨站點腳本攻擊
你好~
XSS漏洞產生的原因:
跨站點腳本的主要原因是程序猿對用戶的信任。開發人員輕松地認為用戶永遠不會試圖執行什麼出格的事情,所以他們創建應用程序,卻沒有使用任何額外的代碼來過濾用戶輸入以阻止任何惡意活動。另一個原因是,這種攻擊有許多變體,用製造出一種行之有效的XSS過濾器是一件比較困難的事情。
但是這只是相對的,對用戶輸入數據的」編碼」和」過濾」在任何時候都是很重要的,我們必須採取一些針對性的手段對其進行防禦。
如何創造一個良好的XSS過濾器來阻止大多數XSS攻擊代碼
1 .需要重點」編碼」和」過濾」的對象
The URL
HTTP referrer objects
GET parameters from a form
POST parameters from a form
Window.location
Document.referrer
document.location
document.URL
document.URLUnencoded
cookie data
headers data
database data
防禦XSS有一個原則:
以當前的應用系統為中心,所有的進入應用系統的數據都看成是輸入數據(包括從FORM表單或者從資料庫獲取到的數據),所有從當前應用系統流出的數據都看作是輸出(包括輸出到用戶瀏覽器或向資料庫寫入數據)
對輸入的數據進行」過濾」,對輸出數據進行」編碼」。這里的」編碼」也要注意,必須針對數據具體的上下文語境進行針對性的編碼。例如數據是輸出到HTML中的那就要進行HtmlEncode,如果數據是輸出到javascript代碼中進行拼接的,那就要進行javascriptEncode。
如果不搞清楚數據具體輸出的語境,就有可能因為HtmlParser()和javascriptParser()兩種解析引擎的執行先後問題導致看似嚴密的」編碼」形同虛設。
2. HtmlEncode HTML編碼
它的作用是將字元轉換成HTMLEntities,對應的標準是ISO-8859-1
為了對抗XSS,在HtmlEncode中要求至少轉換以下字元:
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
在PHP中:
htmlentities
http://www.w3school.com.cn/php/func_string_htmlentities.asp
htmlspecialchars
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
3. javascriptEncode javascript」編碼」
javascriptEncode與HtmlEncode的編碼方法不同,HtmlEncode是去編碼,而javascriptEncode更多的像轉義,它需要使用」\」對特殊字元進行轉義。從原理上來講,這都符合編碼函數的一個大原則: 將數據和代碼區分開,因為對於HTML Tag來說,我們對其進行」可視化(轉換成可以見字元)」的編碼可以將數據和HTML的界限分開。而對於javascript來說,我們除了要進行編碼之外,還需要對特殊字元進行轉義,這樣攻擊輸入的用於」閉合」的特殊字元就無法發揮作用,從而避免XSS攻擊,除此之外,在對抗XSS時,還要求輸出的變數必須在引號內部,以避免造成安全問題。
escape()
http://www.w3school.com.cn/js/jsref_escape.asp
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ – _ + . / 。其他所有的字元都會被轉義序列(十六進制\xHH)替換。
利用這個編碼函數,不僅能防禦XSS攻擊,還可以防禦一些command注入。
一些開源的防禦XSS攻擊的代碼庫:
PHP AntiXSS
這是一個不錯的PHP庫,可以幫助開發人員增加一層保護,防止跨站腳本漏洞。
https://code.google.com/p/php-antixss/
xss_clean.php filter
https://gist.github.com/mbijon/1098477
HTML Purifier
http://htmlpurifier.org/
xssprotect
https://code.google.com/p/xssprotect/
XSS HTML Filter
http://finn-no.github.io/xss-html-filter/
原文地址:http://resources.infosecinstitute.com/how-to-prevent-cross-site-scripting-attacks/
希望可以幫助到你~望採納哦~謝謝~
❿ 下面這段代碼總是檢測到XSS跨站腳本攻擊漏洞找高手求解
是否有漏洞,取決於你輸出的內容是否可信
比如echo $rows["Author"];
如$rows["Author"]裡面是由用戶輸入且入庫未過濾,那麼直接輸出時存在xss漏洞的。
如$rows["Author"]輸入的值為〈script〉 alert( 1 )〈/script 〉
那麼直接輸出存在漏洞,
簡單點修改 echo htmlentities($rows["Author"]),其他echo的類似
如果輸出內容可信(過濾過,或來源可信安全)那麼直接輸出也不存在問題,程序檢測的未必准確。
入庫過濾了或者本身內容來源可靠不存在此漏洞。
