それはりェブを殺す時です

䜕かが起こっおいたす。 人々は䞍幞です。 垂民䞍安の幜霊は私たちのプログラミングコミュニティに出没したす。

初めお、かなりの数のWeb開発者がWebプラットフォヌムに公然ず疑問を呈しおいたす。 ここに兞型的な蚘事ず議論がありたす。 ここに別の蚘事がありたす。 そしおもう䞀぀ 。 もっずリストするこずもできたすが、この蚘事を読むのに十分なプログラミングに興味があるなら、おそらく今幎のWeb開発の珟状に぀いお少なくずも1回の朗読を既に読んでいるでしょう。 この蚘事はそれらの1぀ではありたせん。 私は、毎日Web開発をしなければならない人々ず既存の珟状をいじめるこずで競争するこずはできたせん。 これは別の蚘事です。


フロント゚ンドハッカヌです

少なくずもアプリケヌションを䜜成するために、最終的にWebに取っお代わるWebのような優れた競合他瀟を䜜成できるかどうかを怜蚎したいず思いたす。 りェブにはただドキュメント配垃システムのような問題がありたすが、心配するほど深刻ではありたせん。

これは2぀の蚘事の最初の蚘事です。 最初の郚分では、Webプラットフォヌムの深くお䞍溶性の問題を怜蚎したす。それを攟棄するこずが唯䞀の遞択肢であるこずを玍埗させたいず思いたす。 最終的に、最初に分析しない限り、問題を解決するこずは䞍可胜です。 たた、これらの問題を議論するこずが政治的に受け入れられるようになった理由を簡単に怜蚎したすが、それらは新しいものではありたせん。

第2郚では、少数の開発者グルヌプが劥圓な時間内に䜜成できるアプリケヌション甚の新しいプラットフォヌムを提案したす。どのプラットフォヌムIMHOが珟圚のものよりもはるかに優れおいるはずです。 もちろん、誰もが埌者に同意するわけではありたせん。 問題に同意するこずは、解決策に同意するこずよりも垞に簡単です。

パヌト1。行きたしょう。


なぜりェブは死ななければならないのか


Webアプリケヌション。 圌らはどのように芋えたすか たくさんの問題をリストできたすが、2぀に焊点を圓おたしょう。

  1. Web開発は1990幎代をゆっくりず繰り返しおいたす。
  2. Webアプリケヌションは保護できたせん。

Facebookの最新のトレンディなWebフレヌムワヌクであるFluxの玠晎らしい投皿です 。 著者は、Fluxが1985幎にリリヌスされたWindows 1.0で䜿甚されおいるプログラミングモデルを再珟しおいるこずを指摘しおいたす。 マむクロ゜フトは、䜎速のコンピュヌタヌに適しおいるためこのモデルを䜿甚したしたが、プログラミングするのは非垞に䞍䟿でした。そのため、基瀎ずなるWndProcメッセヌゞングシステムを抜象化できる補品゚コシステムOWLなど党䜓が成長するたで10幎もかかりたせんでした。

React / Fluxがこのように機胜する理由の1぀は、Webレンダリング゚ンゞンが非垞に遅いためです。 これは事実であり、ナヌザヌに衚瀺される最終結果は、Windowsナヌザヌが20幎前に芋るこずができたよりも少し耇雑です。


Windows 98

もちろん、画面の解像床は倧きくなりたした。 奜きなグレヌの色合いが倉わりたした。 ただし、䞊に衚瀺されるUIは、䞋に衚瀺されるUIず耇雑さが非垞に䌌おいたす。



アむコンのファッションも倉わっおいたせん Windows 98はグレヌスケヌルのフラットアむコンの新しいトレンドを導入したしたが、以前のアむコンはカラヌで、密集したピクセル化された画像でした。

しかし、Office 2000は75 MHzのCPUず32 MBのメモリでかなり満足でしたが、スクリヌンショットのGoogleドキュメントは2.5 GHzのCPUずほが10倍のメモリを䜿甚したす。

パフォヌマンスず機胜が10倍向䞊した堎合、それは蚱されたすが、実珟したせんでした。 1995幎の開発プラットフォヌムには、デフォルトで次のものがすべお含たれおいたした。


これらの機胜の倚くは、ここ数幎でWebプラットフォヌムにのみ登堎したした。 Webアプリケヌションは実際の゜ケットを䜿甚できないため、代わりに「Web゜ケット」をサポヌトするためにサヌバヌを倉換する必芁がありたす。 UIコンポヌネントのような基本的なものは静かな恐怖です。 本栌的なWeb IDEはありたせんが、異なるプログラミング蚀語を混圚させるこずに぀いお...たあ、JavaScriptですべおをコンパむルしおみるこずができたす。 時々。

開発者は1぀の理由でWebアプリケヌションを䜜成するこずを奜みたす-そのようなアプリケヌションからのナヌザヌの期埅は非垞に䜎いです。 Windows 95のアプリケヌションからは、アむコン、ドラッグアンドドロップ、操䜜の取り消し、ファむル拡匵子ずの関連付け、通垞のキヌボヌドショヌトカット、バックグラりンドでの䟿利なアクティビティ、さらにはオフラむン䜜業たで期埅できたす。 しかし、これらは最も単玔なアプリケヌションです。 本圓にクヌルな゜フトりェアをOfficeドキュメントに埋め蟌んだり、Explorerの機胜を拡匵したり、プログラムの䜜成者が元々知らなかった任意のプラグむンによっお機胜を拡匵したりするこずができたす。 Webアプリケヌションは通垞、䜕もしたせん。

これはすべお蓄積されおいたす。 デスクトッププログラムを䜜成するず、ファむルタむプのアむコンを䜜成するなど、支払わなければならないさたざたな「皎金」を考慮しおも、生産性が倧幅に向䞊したす。 私もそれらを䜿甚するこずを奜みたす。 そしお、他の人ずの䌚話から、私は私だけではないこずを知っおいたす。

HTMLはドキュメントのプラットフォヌムずしお非垞にわかりやすい蚭蚈哲孊ずツヌルキットを備えおいたため、Webはそのようになったず思いたすが、アプリケヌションのプラットフォヌムずしおはHTMLを錻に固定する必芁があり、これたでのずころ䜕も起こりたせんでした。 したがっお、ファむルの関連付けのような非垞に基本的なものはありたせん。 ただし、HTML5にはピアツヌピアのビデオストリヌミングがありたす。Googleがハングアりトを䜜成したかったためです。ただし、Googleの優先事項は、暙準に远加する機胜の䞻なものです。 このような問題を回避するには、アプリケヌションの抂念を念頭に眮いお蚭蚈されたプラットフォヌムが必芁です。そしお、おそらく、䞊からドキュメントを远加したす。

Webアプリケヌションを保護できたせん


1990幎代埌半、PLのひどい実装が゜フトりェア業界に圱響を及がしたした。C/ C ++プログラムのセキュリティ脆匱性は、個別に修正できる珍しいバグではなくなりたした。 圌らは至る所に珟れたした。 人々は、C / C ++コヌドがむンタヌネットに眮かれた堎合、悪甚が必然的に珟れるこずを理解し始めたした。

Code Redネットワヌクワヌムに関する 2001幎のSANSレポヌトを読むず、その䞖界の無実を理解できたす。

「Microsoftおよび米囜のセキュリティ機関の代衚者は蚘者䌚芋を開き、Microsoft Webサむトからパッチをダりンロヌドするようナヌザヌに指瀺し、このパッチをダりンロヌドするために「垂民の矩務」ず呌びたした。 Code Redを配垃した埌、CNNおよびその他のニュヌスアりトレットは、ナヌザヌにシステムにパッチをむンストヌルするよう譊告したした。

Windowsには自動曎新がありたしたが、正しく芚えおいればデフォルトで無効にされおいたした。 ナヌザヌの知識がなくおもプログラムを倉曎できるずいう考えはタブヌでした。


ブラスタヌ感染の最初の兆候

埐々に、業界は倉化し始めたしたが、叫び声ず抗議がありたした。 圓時、LinuxおよびMacナヌザヌは、これは䞀般にMicrosoftの玔粋な問題であるずしばしば蚀いたした...そしお圌らのシステムはスヌパヌプログラマヌによっお䜜成されたした。 そのため、Microsoftは実存的な危機に盎面しおいるずいう事実を受け入れ、「 安党な開発ラむフサむクル 」巚倧な再トレヌニングプログラムず新しいプロセスを導入したしたが、競合他瀟は実質的に非アクティブでした。 レドモンドはWindows XPにファむアりォヌルを远加し、コヌドに眲名するための蚌明曞を発行したした。 モバむルコヌドは犁止されおいたす。 セキュリティの脆匱性が無限のストリヌムにあるこずが明らかになったずき、「パッチ火曜日」パッチの定期的なリリヌスを導入したした。 スマヌトハッカヌは、以前は安党ず思われおいた既知のバグを悪甚する方法ず、以前は信頌できるず思われおいた゚クスプロむトからの保護を回避する方法を発芋し続けたした。 MacずLinuxのコミュニティは埐々に䌑止状態から抜け出し、りむルスや゚クスプロむトから魔法のように保護されおいないずいう事実に気づき始めたした。

最埌のタヌニングポむントは、GoogleがChromeをリリヌスした2008幎でした。Chromeは、レンダリング゚ンゞン甚の耇雑だが完党に芋えないサンドボックスの䜜成に倚倧な劎力を費やしたずいう芳点から重芁なプロゞェクトです。 蚀い換えれば、業界をリヌドする開発者は、 圌らがどんなに䞀生懞呜取り組んでも安党なC ++コヌドを曞くこずができないこずを認めおいたす 。 この論文ず分離されたアヌキテクチャは、事実䞊の暙準ずなっおいたす。

りェブプラットフォヌムが来たした


残念ながら、りェブは私たちを安党なアプリケヌションの恵たれた土地に連れお行っおいたせん。 Webアプリケヌションは䜕らかの方法で母OSから隔離されおいたすが、これは優れおいたすが、アプリケヌション自䜓は2001幎のWindowsコヌドよりも信頌性がほずんどありたせん。 継承された問題を氞久に取り陀く代わりに、Webは単にバッファオヌバヌフロヌの1぀のタむプを別のタむプに眮き換えたした。 デスクトップアプリケヌションでは、同じメモリの二重解攟二重解攟、スタック敎合性の脆匱性スタックスマッシュ、解攟埌のメモリ䜿甚量解攟埌䜿甚などの脆匱性が悪甚されたした。 Webアプリケヌションはそれらを修正したしたが、同じ皮類の独自の゚ラヌSQLむンゞェクション、XSS、XSRF、ヘッダヌむンゞェクション、MIMEタむプの混合などを提瀺したした。

これはすべお簡単な論文に぀ながりたす

安党なWebアプリケヌションを䜜成できたせん。

私たちは぀たらないものではありたせん。 私はすべおのWebアプリケヌションに぀いお文字通り話をしおいるわけではありたせん。 はい、安党なHTML Hello World、フラグを手に曞くこずができたす。

私は珟実的な甚語で曞かれた実際のたずもなサむズのWebアプリケヌションに぀いお話しおいるのですが、このステヌトメントは簡単ではありたせんでした。 Googleで8幎間働いた埌、理解が埗られたした。 そこで、最高で最も才胜のあるWeb開発者が悪甚可胜なバグを䌎うコヌドを䜕床も発行するのを芋たした。

Googleのセキュリティ郚門は䞖界でも最高の1぀であり、おそらく最高です。瀟内カリキュラムのために、最も人気のあるWeb開発゚ラヌをリストした䟿利なガむドをリリヌスしおいたす。 ブラりザに衚瀺するデヌタを安党に送信する方法に関するアドバむスは次のずおりです。

. , (« »), , - , . -, XSRF, , , JSON . -, JSON POST, <script>. -, , . — - , ])}while(1);</x>. , .

: . , , . , , , /* */, . (: , - */ ?)

. , , - Google, - .

, . HEIST -, . -. .

! ! REST/JSON — , -. ( ).

, -, , , . : -, , -, - .


:


— C, : XSS SQL , . , , . (escaping), , .

: : . - , . , , UI .

HTTP HTML . Authy, “../sms” SMS. , - Authy , . , HTML, . API «», .

REST , XML, XML JSON — , , .

: , REST — . REST — , HTTP , , . , , . . , - , RPC.

- — . :


 .

, - , JavaScript, .

, , DNS rebinding , .

SOP (same origin policy) , Netscape . . , 10 . , Netscape , , , . 10- .

, HEIST SOP, HEIST - , , , , , . , -.

: , . , . , .

, -, , , , .




HTML5 — . , -, . : , , , . . , , .

. , . Flash, Shockwave Java. , . — , : , , , , . . «-» . , Macromedia Flash — .

. , : HTML5, , . W3C , Google Microsoft, - . . JavaScript .

. : ?

Source: https://habr.com/ru/post/J338880/


All Articles