中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web文件操作常見安全漏洞有哪些

發布時間:2021-10-12 13:38:46 來源:億速云 閱讀:132 作者:小新 欄目:開發技術

小編給大家分享一下web文件操作常見安全漏洞有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

做web開發,我們經常會做代碼走查,很多時候,我們都會抽查一些核心功能,或者常會出現漏洞的邏輯。隨著技術團隊的壯大,組員技術日益成熟。 常見傻瓜型SQL注入漏洞、以及XSS漏洞。會越來越少,但是我們也會發現一些新興的隱蔽性漏洞偶爾會出現。這些漏洞更多來自開發人員,對一個函數、常見模塊功能設計不足,遺留下的問題。以前我們能夠完成一些功能模塊,現在要求是要安全正確方法完成模塊才行。 接下來,我會分享一些常見功能模塊,由于設計原因導致漏洞出現。下面,我們先看下,讀取文件型功能漏洞。
我們先看下下面一段代碼,通過用戶輸入不同目錄,包含不同文件

代碼如下:


<?php
///讀取模塊名稱
$mod = isset($_GET['m'])?trim($_GET['m']):'index';
///過濾目錄名稱不讓跳轉到上級目錄
$mod = str_replace("..",".",$mod);
///得到文件
$file = "/home/www/blog/".$mod.".php";
///包含文件
@include($file);


這段代碼,可能在很多朋友做的程序里面有遇到過,對于新人來說,也是很容易出現這樣問題,記得走查遇到該代碼時候,我問到,你這個代碼安全方面能做到那些?
答:1. 對”..”目錄有做替換,因此用戶傳入模塊名里面有有..目錄都會被替換掉了。
    2.構造拼接file名稱,有前面目錄限制,有后面擴展名限制,包含文件就會限制在該目錄了
這段代碼真的做到了目錄安全檢測嗎?
我們來測試下,如果$mod傳入這個值將會是什么樣的結果。web文件操作常見安全漏洞有哪些

$mod 通過構造輸?mod=…%2F…%2F…%2F…%2Fetc%2Fpasswd%00 ,我們看結果將是:

web文件操作常見安全漏洞有哪些

居然include(“/etc/passwd”)文件了。
怎么逃脫了我參數限制呢?
首先:
做參數過濾類型去限制用戶輸入本來就不是一個好方法,一般規則是:能夠做檢測的,不要做替換 只要是檢測不通過的,直接pass 掉!這是我們的一個原則。過濾失敗情況,舉不勝舉,我們來看看,實際過程。
1、輸入”…/…/…/” 通過把”..” 替換為”.”后
2、結果是”../../../” 就變成了這個了
有朋友就會說,如果我直接替換為空格是不是就好了?在這個里面確實可以替換掉。但是不代表以后你都替換為空格就好了。再舉例子下。如:有人將字符串里面javascript替換掉。代碼如下:

復制代碼 代碼如下:


……
$msg = str_replace(“javascript”,””,$msg);


看似不會出現了javascript了,但是,如果輸入:jjavascriptavascript 替換,會替換掉中間一個變為空后。前面的”j” 跟后面的會組成一個新的javascript了。

其次:我們看看,怎么逃脫了,后面的.php 限制呢。用戶輸入的參數有:”etc/passwd\0” ,\0字符非常特殊,一段連接后,文件名稱變成了”……etc/passwd\0.php”,你打印出該變量時候,還是正確的。但是,一段放入到文件讀寫操作方法里面,\0后面會自動截斷。操作系統,只會讀取……etc/passwd文件了。 “\0”會出現在所有文件系統讀寫文件變量中。都會同樣處理。這根c語言\0作為字符串完整標記有關系。
通過上面分析,大家發現做文件類型操作時候,一不注意將產生大的漏洞。而且該漏洞就可能引發一系列安全問題。

該怎么做文件類操作呢?
到這里,估計有人就會思考這個,做文件讀寫操作時候,如果路徑里面有變量時候,我該怎么樣做呢?有人會說,替換可以嗎? “可以”,但是這個方法替換不嚴格,將會出現很多問題。而且,對于初寫朋友,也很難杜絕。 做正確的事情,選擇了正確的方法,會從本身杜絕問題出現可能了。 這里,我建議:對于變量做白名單限制。

1.什么是白名單限制

復制代碼 代碼如下:


舉例來說:
$mod = isset($_GET['m'])?trim($_GET['m']):'index'; ///讀取模塊名稱后
mod變量值范圍如果是枚舉類型那么:
if(!in_array($mod,array(‘user','index','add','edit'))) exit(‘err!!!');
完全限定了$mod,只能在這個數組中,夠狠!!!!

2.怎么做白名單限制
通過剛才例子,我們知道如果是枚舉類型,直接將值放到list中即可,但是,有些時候,這樣不夠方面。我們還有另外一個白名單限制方法。就是限制字符范圍

復制代碼 代碼如下:


舉例來說:
$mod = isset($_GET['m'])?trim($_GET['m']):'index'; ///讀取模塊名稱后
我限制知道$mod是個目錄名稱,對于一般站點來說,就是字母加數字下劃線之類。
if(!preg_match(“/^\w+$/”,$mod)) exit(‘err!!!');
字符只能是:[A-Za-z0-9_] 這些了。夠狠!!!

以上是“web文件操作常見安全漏洞有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

web
AI

柘荣县| 六盘水市| 汝南县| 开江县| 镇坪县| 湟源县| 通江县| 南康市| 秦皇岛市| 南皮县| 苍溪县| 沁水县| 两当县| 平阴县| 嘉黎县| 广饶县| 都兰县| 杭锦后旗| 腾冲县| 久治县| 和静县| 德惠市| 临邑县| 宜州市| 大足县| 永昌县| 西乌珠穆沁旗| 林州市| 无锡市| 开鲁县| 车致| 蒲城县| 洪泽县| 土默特左旗| 宣城市| 文化| 永州市| 娱乐| 黄梅县| 晋城| 东宁县|