|
|
|
|
|
|||||
|
|||||
| 樓主 Allen
![]() |
剛才讀到
http://www.mikekunz.com/image_file_header.html 這篇教人如何藉由讀取檔案前2,3個byte,來判斷是否真的是圖檔, 請問,若要做網頁供人上傳圖片,用這種方法,是否就真的可以確認,不會被上傳亂七八糟(例如病毒檔)檔案了? 或者,有什麼方法,可以確定上傳的一定是圖片,謝謝
本篇文章發表於2007-08-01 18:04
=========================================網站 : http://www.allenkuo.com/ |
||||
| VP、EP、QP、HP該如何使用? | 免費申請藍色部落 |
| 1樓 |
除此之外,還可以用RegularExpressionValidator去限定上傳檔案的副檔名,
先過濾掉大部分假圖檔。
本篇文章回覆於2007-08-01 19:09
|
||||
| 2樓 |
Allen兄的意思應該是指有心人士,將一些傳亂七八糟(例如病毒檔)檔案的副檔名改成
gif或jpg等合法的副檔名,所以個人猜想用RegularExpressionValidator應該是擋不掉的。 且駭客也是有辦法中止掉前端的檢查,所以後端還是要再檢查一遍才保險。 記得有一本書提到,不管前端作了再多的檢查,到了後端都要假設傳過來的資料是不安全的 一定都要再經過一道檢查手續的。 隨著網頁愈來俞炫,讓使用者上傳檔案的功能一定是有須求的,不只是圖檔,也有可能是 影音等各式各樣的檔案,而網頁又不像是內部用的Win AP是對外公開的,所以受到攻擊的機會 相對的就比較多了。所以該如何防止應該是個重要的課題。 推一把,有經驗的大大能否分享一下經驗。 Allen兄,怎麼那麼小器,才10QP。 ^_^
本篇文章回覆於2007-08-01 21:50
阿源哥哥的軟體組裝工廠:http://blog.xuite.net/keigen/SoftwareFactory新書內容簡介:http://blog.xuite.net/keigen/books/27268981 Silverlight 4 和 Ria Service的商業應用程式:http://blog.xuite.net/keigen/SoftwareFactory/33190644 |
||||
| 3樓 |
偷懶的方式
幫圖檔做縮圖,如果沒exception 應該就是圖檔啦
本篇文章回覆於2007-08-01 21:57
|
||||
| 4樓
作者回應
Allen
![]() |
to #2,
對厚,忘了給多一點點數,呵 to #3, 這也是一個方法,若真要這麼做,倒不必去讀前幾個byte了,但如果讀前幾個byte真的可以治本,倒是比較好的作法,只是不知道是否安全
本篇文章回覆於2007-08-01 22:26
=========================================網站 : http://www.allenkuo.com/ |
||||
| 5樓 |
用製作縮圖的方式個人不甚贊同,
萬一哪天又發生個緩衝區溢位的漏洞, 或是自己沒控制好, 或是故意開一個幾G的超大圖檔, 很容易就中招了 最標準的還是讀取前幾個byte 這樣其他檔案格式也可以讀出來, 也最節省系統資源 但實際作法還是要看你的系統後續對該圖檔要做甚麼處理 才能知道怎麼做比較好
本篇文章回覆於2007-08-01 23:25
|
||||
| 6樓
作者回應
Allen
![]() |
Jerry,
如果是intranet,使用者上傳圖片,是比較沒危險性 但若在internet供會員上傳相簿,或者撰寫文章時,利用html editor 上傳圖片, 我就擔心會中招,圖片的後續處理,多半是直接呈現,或者另外做小圖 所以才會想了解有沒有什麼方法,是可以真的檢查出來它的真實性 請問讀前幾個byte,這方法是穩當的嗎?
本篇文章回覆於2007-08-02 09:35
=========================================網站 : http://www.allenkuo.com/ |
||||
| 7樓 |
一般都只讀前2個byte來判斷,也許有點風險,
如果照樓主的文章,JPG讀9個byte,GIF讀3個byte, BMP讀2個byte,應該是很穩當的。
本篇文章回覆於2007-08-02 09:53
|
||||
| 8樓 |
想請問大家,在.NET裡面要如何去讀檔案的byte呢??
本篇文章回覆於2007-08-02 09:57
|
||||
| 9樓 |
簡單寫就這樣而已...
本篇文章回覆於2007-08-02 10:11
|
||||
| 10樓 |
=.=
如果是要防惡意檔案的話,我想答案應該是無解的 有用過DOS的合併檔案指令的話就會知道 A+B+C+..........=A 即使它是一個正常的圖檔,也可能是夾帶病毒或SCRIPT的圖檔 就像有些偽裝軟體,可以把影片分割並偽裝成圖片,表面上是正常的圖片,經過軟體組合即可還原成影片 當檔案上傳時是沒有影響的,但當無辜的使用者去讀取這張圖片時 很可能就中彈身亡了 僅能防君子,無法防小人啊∼
本篇文章回覆於2007-08-02 10:35
|
||||
| 11樓 |
對喔...都忘了還有合併檔案這招,
殘念~
本篇文章回覆於2007-08-02 11:02
|
||||
| 12樓 |
借問一下喔...
如果某用戶上傳了合併後的偽圖檔(例如:JPG和exe檔合併), 藉此避開格式判斷,那其他用戶在網頁上瀏覽這張圖片時 會有什麼影響? 剛剛試了一下,圖片可以正常顯示,就是檔案變大(因為合併了exe檔), 除此之外,會有哪些安全性的顧慮?
本篇文章回覆於2007-08-02 12:15
|
||||
| 13樓
最有價值解答
Jerry Lai
![]() |
除了之前GDI+的JPEG漏洞以外
目前好像還沒有其他因圖檔所造成的災情 檔案合併這個情形暫時可以不管 因為如果可以hack到你的web去進行檔案合併 那就不光是檔案上傳這種小問題了(除非你的程式還有其他漏洞可以讓人作檔案合併) 而如果是user下載回去之後才被合併的情形機率更低 而且合併的問題有辦法可以避免 個人是建議可以先用前幾byte來判斷 過了這關之後判斷檔案大小會不會太離譜 完了之後讀進記憶體再轉存 這樣隱藏在檔案後端的部份就會被剔除 也就不用擔心偽圖檔的問題了
本篇文章回覆於2007-08-03 02:13
|
||||
| 14樓 |
感謝Jerry解答∼
本篇文章回覆於2007-08-03 07:48
|
||||
| 15樓
作者回應
Allen
![]() |
Jerry,
您的意思,是自己先new image物件,將使用者上傳的圖讀進來,將image存成圖片,自然就會過濾掉附加的檔案了,是嗎
本篇文章回覆於2007-08-03 09:22
=========================================網站 : http://www.allenkuo.com/ |
| 回覆 |
| 如要回應,請先登入. |
|
![]() |
| 網站導覽| 網站介紹 | 會員權益 | 點數說明 | 加值服務 | 大事紀 | 廣告刊登 |常見問題 | 聯絡我們 |
捨得資訊股份有限公司 版權所有 ©copyright 2004 All Rights Reserved 艾堤數位科技股份有限公司 網站維護、經營管理 | Managed by I-Tea Technology |
|
|