編寫獨有閉源瀏覽器可以提高安全性嗎?

假設有這麼一種瀏覽器:

1 閉源,且不公開網頁源文件,不允許打開本地網頁文件或文檔

網頁源文件在伺服器端先進行處理生成2進位文件再傳送至客戶端,客戶端只能識別2進位源文件而不能識別程序語言源文件。

2 不開放URL欄,一打開瀏覽器默認是本公司網站首頁,只能在本公司網站內鏈接,杜絕一切外鏈。

3 將https協議進行一定程度改寫,開發一套只有本公司的客戶端與伺服器使用的私有應用層協議,協議不公開

通過這種方法,可以提升安全性,比如避免前端安全問題嗎?雖說可能還是會遭到反彙編逆向攻擊,但從門檻上講,這種瀏覽器可以顯著提高攻擊所需基礎水平,也可以算提高安全性了吧?


會有點改善,但是不能大幅提高。

要講哲學。

無論你怎麼閉源,甚至把腳本預編譯為代碼,也不能改變這麼幾個事實:

1、還是基於WEB的遠程訪問系統

2、幾乎所有的URL和遠程API都沒有變化

3、邏輯和代碼缺陷仍然存在,無論是腳本還是伺服器側。

安全攻擊,本質上是利用了邏輯漏洞/代碼缺陷,通過本地或者遠程介面,惡意地濫用本地或遠程資源。

所以這種辦法只是加大了一點別人做邏輯和代碼分析的難度,但並沒有從根本上修補好缺陷。

而各種滲透和注入手段,都還是可以用的,雖然不可以修改瀏覽器和頁面、腳本,但還是可以直接修改協議報文。


這就跟你從windows store下載使用uwp app來運行是一樣的,唯一的區別就是,「瀏覽器」和「網頁」都是簽了名的,你沒有辦法進行任何更改,所以很多攻擊措施都無法實施。

但是然並卵,要是你app寫得不好,你的app照樣被人干。


你有IE的源文件嗎?


windows系統不是開源的,它上面運行的大部分軟體也不是開源的


1 閉源,且不公開網頁源文件,不允許打開本地網頁文件或文檔

網頁源文件在伺服器端先進行處理生成2進位文件再傳送至客戶端,客戶端只能識別2進位源文件而不能識別程序語言源文件。

這需要伺服器支持,沒伺服器支持你就根本做不成。全世界的web伺服器有幾個不傳送html的?

2 不開放URL欄,一打開瀏覽器默認是本公司網站首頁,只能在本公司網站內鏈接,杜絕一切外鏈。

這哪兒叫瀏覽器,這不就是一個包著瀏覽器控制項的app嗎?

3 將https協議進行一定程度改寫,開發一套只有本公司的客戶端與伺服器使用的私有應用層協議,協議不公開

如果用於公司內網的通訊,直接自己開發個用現成加密演算法的協議好了,幹嘛非的跟http扯上關係,http招你惹你了?


安全是一種積澱,與開源與否無關


和開源閉源關係不大,還是少一些bug和漏洞才是王道,比如IE漏洞太多,ms乾脆重寫了一個瀏覽器Edge。。


非常不安全。

我就簡單講一點吧。

去攻擊你的瀏覽器可能有一點點難度。

但是利用現有技術給一個炸彈包裝成你這個瀏覽器的樣子,卻很容易。

因為,使用者也不知道原來盒子裡面是什麼。

聽說過木馬嗎?


為啥linux公開的漏洞比windows少?


雖然好像沒感情狀況,

但是感覺沒用,

只說第二點,

我覺得應該,

電腦不連接外網,

和公司web伺服器在區域網內通信,

有必要的話web伺服器可以連外網,


說得好像ie這款閉源瀏覽器很安全樣的


已經有了叫瀏覽器的東西了

你意淫的這個東西可以換個名字嗎?


題主說的其實就是 C/S 架構層面的東西,也早就不新奇了,大多數的 C/S 架構產品的通信加密協議複雜多了。要知道「Browser」區別於傳統的「Client」的地方在於它沒有指定且唯一的「Server」,而且是通過 開放協議(HTTP/HTTPS)訪問服務端。

而題主所說的「閉源瀏覽器」,先不說通信協議閉源,服務端如果不開放出去的話,基本上就是完全的 C/S 架構了,自己公司玩玩可以,就算 Server 端開放出去,閉源的話也很難吸引到開發者,因為對開發者來說,Server 端被壟斷且無法定製,機制不透明導致的 BUG 也無法修復。

其實題主會有這樣的想法很正常,為什麼 Browser 將源碼直接對用戶開放呢,為什麼不加密傳輸呢?其實,HTTP 可以 gzip 壓縮,HTTPS 協議更是只有 Browser 才能解密傳輸數據,所以事實上是「Browser 提供給用戶查看源碼的功能」,究其原因,我覺得第一是方便開發者調試,第二是加密措施基本上防不勝防,開發者成千上億,有一人逆向出來基本上就廢了,第三應該就是歷史原因了:HTML 文件在早期就是簡單地描述頁面數據、元素,是解釋性語言,並非編譯型語言。


這樣就沒有B/S的優勢了,不如直接C/S

===========================================================

答題主:

你這個就是一個像瀏覽器一樣的C/S客戶端嘛。

瀏覽器的優勢在於http與html協議,然而你的瀏覽器只為自己使用,也就是說要自己實現一個不兼容的瀏覽器,那不如針對具體的業務邏輯實現一個客戶端,這樣工作量反而更小。B/S之所以換網頁簡單,就是因為別人已經實現了瀏覽器而不用自己去做啊。你現在要自己去實現一個只有自己使用的瀏覽器,哪來的優勢?

況且C/S架構能在客戶端實現大量邏輯處理這是C/S的優勢,B/S的短板啊。正是這個短板,現在瀏覽器發展的一個趨勢就是提高js性能,豐富html的功能(html),搞各種大框架,還搞出web assembly這種東西就是為了能讓瀏覽器多幹活,這樣既減輕了伺服器的負擔,也可以減小網路流量。

題主要是想要那種寫網頁一樣簡單來寫客戶端,現在好多都可以這樣了吧,比如QML,XAML等(我不是很了解,不過應該不複雜,而且與寫網頁很相似)。要不就老老實實用B/S架構,然後在這個架構上多做一些加強安全的工作。

另外多說一句個人觀點:B/S與C/S架構是適合不同的應用的,B/S更適合表現型應用,C/S更適合功能性的應用。


這和網路客戶端有什麼區別?


維基百科說: 不行。參見 https://en.m.wikipedia.org/wiki/Security_through_obscurity


可用即可利用


不如用狗。。。


那麼這個瀏覽器誰會用?。。。


你這個,就是一個手機APP或客戶端軟體啊


推薦閱讀:

為什麼有些遊戲公司的前端職位和其他的研發職位工資差距那麼大?
前端的MVC框架和後端的SSH框架怎麼結合?
為什麼Bootstrap不設計得像Semantic UI那樣簡潔易懂?
有一 li 元素其中有中文和英文,怎麼分別設置他們的字體樣式呢?

TAG:前端開發 | 網頁瀏覽器 | 網路安全 | 黑客Hacker | 信息安全 |