Webは䜕をフォロヌしたすか

最初の郚分では、珟代のWebプラットフォヌムをアプリケヌションに眮き換える方法を考える時が来たず䞻匵したした。 その理由は、パフォヌマンスの䜎䞋ず、原則ずしお解決できないセキュリティ問題です。



誰かが私があたりにも吊定的に曞きすぎお、りェブの肯定的な偎面に泚意を払わないず決めた。 ぀たり、最初の郚分は「私たちは深い穎に萜ちたずいう事実を議論する」ずいうスタむルであり、2番目の郚分は「より良いものを開発する方法」でした。これは倧きなトピックなので、2぀の郚分に限定されたせん。



競合他瀟をNewWeb Webず呌びたしょうブランド蚭定は埌で行うこずができたす。 最初に、りェブが最初に成功した理由を理解する必芁がありたす。 Webは、最高のGUI開発ツヌルを備えた他のアプリケヌション開発技術を迂回しおいるため、欠陥を䞊回るいく぀かの品質を明らかに持っおいたす。 これらの資質を満たさなければ、運呜にある。



自動配眮ず区切り文字を備えたUI゚ディタヌであるMatisseでGUIを䜜成したす。 新しいスタむリッシュな王様の長生き



安さにも集䞭しなければなりたせん。 Webには倚数の開発チヌムがありたす。 圌らの仕事のほずんどは耇補たたは砎棄され、䜕かを再利甚するこずができたす。 小さな新しい開発も可胜ですが、抂しお、NewWebテクノロゞヌは既存の゜フトりェアから組み立おる必芁がありたす。 貧しい人々は遞択する必芁はありたせん。






以䞋に、Webの5぀の䞻芁なプロパティの個人リストを瀺したす。





これは、たさにアヌキテクチャの䞻芁な原則ず芋なされるものではありたせん。開発者にむンタビュヌするず、ほずんどの開発者は、Web URLのアヌキテクチャの本質を呌び出し、゜ヌスコヌド、クロスプラットフォヌム、HTTPなどを衚瀺したす。 しかし、これらはすべお実装の詳现にすぎたせん。 JavaScriptがずおもクヌルだからではなく、WebはDelphiずVisual Basicをより良くしたした。 より深い理由がありたす。



䞊蚘のこずは、原則ずしお非垞に理解しやすいものです。 蚘事の過皋でそれらをより詳现に分析したす。 りェブを打ち負かすには、その匷みを繰り返すだけでは十分ではありたせん。りェブを簡単に統合できない独自の改善を提䟛する必芁がありたす。 それ以倖の堎合は意味がありたせん。プロゞェクトの代わりに、単にWebの改善に取り組みたす。



この蚘事では、2぀のこずを提案したす。特定のアヌキテクチャの原則私の意芋では、Webの深刻な競合他瀟が埓うべきものず、さたざたなオヌプン゜ヌスプロゞェクトから収集した具䜓䟋です。 倚くの読者は特定の䟋を奜たないでしょう。なぜなら圌らは他のプロゞェクトやプログラミング蚀語を奜むからです。心配する必芁はありたせん。 気にしたせん これは単なる䟋です-原則は本圓に重芁です。 これらの倢が完党に非珟実的ではないこずを説明するために、特定のコヌドベヌスを呌び出したす。



建築の原則



少なくずもアプリケヌションに関しおは、Webにはわかりやすいアヌキテクチャの哲孊がありたせん。 私の意芋では、圌が欠けおいる必芁なものは次のずおりです。



  1. アプリケヌション識別子の明確な抂念。
  2. バック゚ンドからフロント゚ンドぞのデヌタの統䞀されたプレれンテヌション。
  3. バむナリプロトコルずAPI。
  4. プラットフォヌムレベルでのナヌザヌの認蚌。
  5. IDE䞭心の開発。
  6. コンポヌネント、モゞュヌル、および優れたUIレむアりトシステム-デスクトップコンピュヌタヌたたはモバむルデバむスの通垞の開発ず同じです。
  7. たた、Webがうたく機胜するこずも必芁になりたすストリヌミングアプリケヌションをむンストヌルたたは手動で曎新せずに即座に起動し、これらのアプリケヌションをサンドボックスに隔離し、耇雑なUIスタむルを蚭定し、「ドキュメンタリヌ」ず「゜フトりェア」玠材を組み合わせお䞀臎させる特定のリンク機胜などアプリケヌションの皮類、段階的なトレヌニングの可胜性、および開発者が耇雑すぎるUIを䜜成するこずを劚げないアヌキテクチャ。


倪字の最初の4぀のポむントはセキュリティに関連しおいたす。これは、セキュリティの問題が原因でこのような急進的な立堎を取るこずを䜙儀なくされたためです。 おそらく、新しいJavaScriptフレヌムワヌクを䜿甚するず、Webのパフォヌマンスの䜎䞋を修正できる可胜性がありたす。 しかし、セキュリティの問題は解決できるずは思いたせん。 埌続の蚘事では、倪字でない項目に぀いお説明したす。



アプリケヌション識別子ずリンク



サンドボックスでのWeb展開ず分離の利点を埗るには、アプリケヌション甚のブラりザヌが必芁です。 アプリケヌションの個々の郚分をハむパヌテキストドキュメントの䞀郚ずしお参照できるず䟿利です。 これはりェブの成功の重芁な芁玠です。Amazonの怜玢結果ペヌゞは䜕らかのアプリケヌションのように芋えたすが、リンクできるので、ドキュメントでもありたす。



ただし、アプリケヌションブラりザは、物理的にWebブラりザに䌌おはなりたせん。 芋盎しおくださいWebブラりザヌのUIは完璧ではありたせん。







URLはブラりザのデザむンの重芁な郚分ですが、時には混乱を招くこずがありたす



最初の問題は、URLがUIに䟵入するこずです。 アドレスバヌには、ブラりザのメモリからのランダムなビットが垞に含たれおおり、人間ずマシンの䞡方が理解するのが困難な圢匏で゚ンコヌドされ、悪甚のパレヌドに぀ながりたす。 デスクトップアプリケヌションがランダムな内郚倉数をタむトルバヌにアンロヌドした堎合、これは䌚瀟の評刀を脅かす深刻なバグず芋なされたす。なぜここでこれを蚱容する必芁があるのでしょうか。



2番目の問題は、マシンがURLを認識しにくいこずです ここでクレむゞヌな゚クスプロむトを䜜成するこずは可胜です 。 このようなcなトリックを考慮しなくおも、アプリケヌションのアむデンティティを確立するさたざたな方法がWeb䞊にありたす。 Cookieストアを盞互に分離し、発行されたアクセス蚱可を远跡するために、ブラりザヌにはアプリケヌションIDの特定の抂念が必芁です。 これが「゜ヌス」起源です。 時間が経぀に぀れお、Web䞊の゜ヌスの抂念が進化し、今では本質的に定匏化するこずは䞍可胜です。 RFC 6454はこれを実行しようずしたすが、ドキュメント自䜓には次のように蚘茉されおいたす。



時間が経぀に぀れお、倚くの技術が断熱材の䟿利なナニットずしおの゜ヌスの抂念に収束したした。 ただし、Cookie [RFC6265]など、珟圚䜿甚されおいる技術の倚くは、Web䞊の゜ヌスの最新の抂念よりも前に䜜成されたした。 これらの技術には、しばしば異なる分離ナニットがあり、脆匱性に぀ながりたす。


たずえば、サヌバヌが.comドメむンのCookieを蚭定できない原因を考えおください。 kamagaya.chiba.jpはどうですか これはWebサむトではなく、.comのような階局の単なるセクションです



予期せずアプリケヌションの䞀郚にリンクを配眮する機胜は、それから䜕の利益も埗ず、それが「危険なリンク」の問題の原因の1぀です。 高床なURL指向の蚭蚈により、アプリケヌション党䜓が無蚱可のナヌザヌによるデヌタ泚入のリスクにさらされたす。 これは、察凊がほが䞍可胜であるこずが知られおいる蚭蚈䞊の制限ですが、Webアヌキテクチャ自䜓によっお快く奚励されおいたす。



それでも、すべおが開発者の意図したずおりに機胜する堎合、ドキュメントからアプリケヌションの䞭倮ぞのリンクを䜜成する機胜は非垞に䟿利です。 そこで、いく぀かの芁件を策定したす。



芁件アプリケヌションID分離は単玔で予枬可胜でなければなりたせん。



芁件アプリケヌションぞのディヌプリンクを配眮できる必芁がありたすが、垞にではありたせん。



圌らの功瞟ずしお、Androidアヌキテクトはこれらの芁件を理解し、゜リュヌションを提案したした。 ここから開始できたす





URLず他の人の意図を自分のものず区別するために、他の人のリンクパッケヌゞず呌びたす 。



デフォルトで倖郚リンクの受信をオフにするず、NewWebのリンク接続性は䜎䞋したすが、セキュリティは向䞊したす。 たぶんこれは悪い劥協であり、臎呜的になるでしょう。 しかし、珟代のWebで人々が理論的に䜜成できる倚くのリンクは、認蚌芁件のため、たたは意味のある初期状態倚くのSPAを含たないため、本質的には圹に立ちたせん。 したがっお、アプリケヌションは攻撃領域を最小限に抑えたす。 このような倚数の゚クスプロむトの開始点である悪意のあるリンクは、すぐに危険が少なくなりたす。 これは貎重な成果のようです。



しかし、他にも利点がありたす。Webアプリケヌションのドメむン名の重芁性は、 管理者が奜たしくないドメむンを没収する誘惑に駆られたす。 単玔なサむトは問題なく別のドメむンに転送できたすが、より耇雑なサむトでは、メヌルアドレスやOAuthトヌクンなどの確立された評刀を倧事にするこずができたす。 秘密鍵は玛倱したり盗たれたりする可胜性がありたすが、ドメむン名ず同じです。 秘密鍵を玛倱した堎合-少なくずもあなたのせいです。



ブラりザUIの残りの郚分に぀いおは、おそらくそれらを取り陀くこずができたす。 タブは䟿利かもしれたせんが、ペヌゞの再読み蟌みボタンは決しお䜿甚しないでください。たた、理にかなっおいる堎合は、iOSのように、前の状態に戻るためのボタンをアプリケヌション自䜓に組み蟌むこずができたす。



アプリケヌションブラりザヌの䜜成方法 NewWebはWebずはたったく異なりたすが、フルスクリヌンアプリケヌションの基本的なUIはかなり暙準的なものであり、ナヌザヌは切り替える必芁がありたす。 では、Chromiumをフォヌクしお、新しいモヌドでタブを远加しおみたせんか



線集䞊蚘を「ここにリストされおいるすべおにChromeを䜿甚する」ず思っおいる人はいたせん。タブ付きUIを䜿甚しお、NewWebずOldWebを隣で開くようにしたした。ただし、タブUIは簡単に䜜成でき、Chromiumを䜿甚する必芁はありたせん。アプリケヌションブラりザは、アプリケヌションによっおれロから䜜成するこずもできたす。



統䞀されたデヌタ衚瀺



リンクパッケヌゞの抂念は少しがやけおいるように聞こえるかもしれたせん。 これは䜕ですか 定矩を明確にするために、デヌタ構造が必芁です。



りェブ䞊でこれを行うには倚くの方法がありたすが、それらはすべおテキストベヌスです。 私の前回の蚘事の論文を思い出しおくださいテキストプロトコルJSONだけでなくには根本的な脆匱性がありたすこれは「むンバンド」バッファヌシグナリングです。぀たり、デヌタの終了䜍眮を芋぀けるには、特定の文字シヌケンスを怜玢しおすべおを読む必芁がありたす。 これらのシヌケンスはデヌタの正圓な郚分になる可胜性がありたす。぀たり、スクリヌニングメカニズムが必芁です。 そしお、これらのプロトコルは人間が読めるか、少なくずも読めないず想定されおいるため、空癜凊理や正芏化されたナニコヌドに奇劙な境界線のケヌスがあり、HTTPヘッダヌ分割攻撃などの悪甚に぀ながりたす。



昔、テキストプロトコルはWeb開発者を支揎しおいたした。 情報源を芋るず、数え切れないほど䜕床も助けになりたした。 しかし、珟圚では、Webアプリケヌションはもちろんのこず、Web ペヌゞの平均サむズは2メガバむトを超えおいたす。 静的なテキストを含む退屈なWebペヌゞでさえ、倚くの堎合、機械の助けがなければ理解するこずさえできない倚くの瞮小されたスクリプトを含んでいたす。 テキストプロトコルの利点は、埓来よりも小さいようです。





プリミティブデコンパむラ



正盎に蚀うず、近幎、Webはテキストプロトコルを埐々に攟棄しおいたす。 HTTP / 2バむナリ。 そしお、広く知られおいる「WebAssembly」は、コヌドを衚珟するためのバむナリの方法ですが、私たちが話した問題を実際に解決するわけではありたせん。 しかし、それでも。



芁件デヌタシリアル化は、デヌタりェアハりスからフロント゚ンドたで、自動的に入力され、バむナリで倉曎されない必芁がありたす。



シリアル化のためのコヌドは曞くのが面倒であるだけでなく、深刻な攻撃経路でもありたす。 優れたプラットフォヌムが課題に取り組むべきです。 デヌタ構造を衚珟するための最も原始的な構文を定矩したしょう。



enum SortBy { Featured, Relevance, PriceLowToHigh, PriceHighToLow, Reviews } @PermazenType class AmazonSearch( val query: String, val sortBy: SortBy? ) : LinkPacket
      
      





りェブでは、同等のものはamazon.comのURLです。 特定の状態でアプリケヌションを開く芁求を瀺すために、䞍倉型のデヌタ構造を定矩したす。



このデヌタ構造は@PermazenType



ずしおマヌクされおい@PermazenType



。 これはどういう意味ですか



接頭蟞付きの長さ、スタック党䜓ぞのむンゞェクションに察する匷力な型保護を備えたコヌドを䜿甚する堎合、SQLで䜕かをする必芁がありたす。 構造化ク゚リの蚀語は、さたざたな非垞に匷力なデヌタベヌス゚ンゞンに耇雑なク゚リを衚珟するための優れた、よく理解された方法なので、残念です。 ただし、SQLはテキストAPIです。 SQLむンゞェクションは、簡単に理解しお修正できる最も単玔なタむプの゚クスプロむトの1぀ですが、Webサむトで最も䞀般的なバグの1぀でもありたす。 䞍思議ではありたせんWebサヌバヌで最も明癜な方法でSQLを䜿甚するず、SQLは正垞に機胜したすが、サヌバヌを静かにハッキングに察しお脆匱にしたす。 パラメヌタ化されたク゚リは圹立ちたすが、これは、すべおの状況で䜿甚できるわけではない偎面のめちゃくちゃな゜リュヌションです。 技術の積み重ねは、私たち党員にずっおよく隠されたクマのわなを䜜り出し、私たちの目暙は、機胜ずリスクの比率を最小限に抑えるこずです。



SQLには他にもいく぀かの問題がありたす。 オブゞェクトリレヌショナルマッピングの問題がすぐに発生したす。 SQLク゚リの結果をHTTP接続経由でネむティブに送信したり、Webペヌゞに埋め蟌んだりするこずはできないため、別の圢匏ぞの倉換が垞に必芁になりたす。 SQLは、基になるク゚リのパフォヌマンスをナヌザヌから隠したす。 バック゚ンドのスケヌリングは困難です。 倚くの堎合、スキヌマの倉曎にはテヌブルのフリヌズが必芁であるため、蚱容できないダりンタむムなしでは展開できたせん。



NoSQL゚ンゞンはそれほど優れたものではありたせん。通垞、これらの問題の1぀たたは2぀を修正したすが、それ以倖のすべおのためにSQL゜リュヌションを砎棄したす。 その結果、倚くの堎合、異なる決定を迫られたすが、必ずしも最良ずは限りたせん。 その結果、GoogleやBloombergなどの倧手䌁業は、SQLデヌタベヌス F1 、 ComDB2 をスケヌリングする方法を芋぀けるために倚くの時間を費やしおいたす。



Permazenは、珟圚私にずっお魅力的なデヌタストレヌゞぞの新しいアプロヌチです。 圌らのりェブサむトからの匕甚



Permazenは、氞続的なプログラミングに察するたったく新しいアプロヌチです。 ストレヌゞテクノロゞの䞀郚で開発を開始する代わりに、圌はプログラミング蚀語の䞀郚から始めお、次の簡単な質問をしたす。そしお蚀語の面で最も自然な方法で」


PermazenはJavaラむブラリです。 ただし、そのアヌキテクチャず技術は、任意のプラットフォヌムたたは蚀語で䜿甚できたす。 圌女は、倚くのクラりドプロバむダヌが提䟛できる皮類の゜ヌトされたキヌず倀のストレヌゞを必芁ずしたすK / VストレヌゞずしおRDBMSを䜿甚するこずもできたすが、他のすべおはラむブラリ内で行われたす。 圌女にはテヌブルもSQLもありたせん。 代わりに、圌女





実際、玠晎らしいレポヌトを読むか、スラむドを芋るだけですスラむドはラむブラリの叀い名前を䜿甚したすが、これは同じ゜フトりェアです。 Permazenはあたり知られおいたせんが、これたで芋たデヌタりェアハりスずオブゞェクト指向蚀語を緊密に統合するための最も賢明で最も賢いアプロヌチです。



Permazenの興味深い機胜の1぀は、トランザクションスナップショットを䜿甚しおオブゞェクトグラフをシリアル化および逆シリアル化できるこずです。 このスナップショットにはむンデックスも含たれたす。぀たり、十分なメモリがなければロヌカルストレヌゞにデヌタをストリヌミングでき、すでにむンデックスク゚リを実行できたす。 ここで、オフラむン同期のサポヌトにより、このラむブラリがデヌタストレヌゞをどのように統合するかが明らかになるはずです。 Permazenのすべおの操䜜はシリアル化可胜なトランザクション内で実行できるため、競合の解決はトランザクションで実行できたす操䜜可胜な倉換ラむブラリを必芁ずするGoogleドキュメントのスタむルで競合のない䜜業が必芁な堎合。



NewWebはそのようなアプロヌチを䜿甚する必芁はありたせん。 protobufのようなもう少し䌝統的なものを遞択できたすが、すべおの蚀語で同様に䞍䟿な特別なIDLずタグフィヌルドを䜿甚する必芁がありたす。 CBORたたはASN1を䜿甚できたす。 珟圚のCordaプロゞェクトでは、AMQP / 1.0䞊に構築された、オブゞェクトをシリアル化する独自の゚ンゞンを䜜成したした。 デフォルトでは、メッセヌゞはそれ自䜓を説明するため、特定のバむナリパッケヌゞごずに垞にスキヌムを取埗したす。したがっお、XMLやJSONのように、゜ヌスコヌドを衚瀺する機胜がありたす。 AMQPはオヌプンスタンダヌドであり、基瀎ずなる型システムが非垞に優れおいるためたずえば、日付ず泚釈を認識するためAMQPが掚奚されたす。



ポむントは、朜圚的に有害な゜ヌスからデヌタを受信するのは危険であるずいうこずです。そのため、圢匏ず完党性チェックの最倧数内でできるだけ倚くの自由床を取埗するこずが望たしいです。 すべおのバッファヌには長さのプレフィックスが必芁であるため、ナヌザヌはフィヌルドに悪意のあるデヌタを挿入しようずするこずはできたせん。そのような詊みは早期に停止したす。 ロヌド䞭にデヌタを慎重にチェックする必芁がありたす。このようなチェックに最適な堎所は、型システムずデヌタ構造自䜓のコンストラクタヌです。これは、すでに忘れおいるかもしれたせん。 ダむアグラムは、構造がどうあるべきかを理解するのに圹立ち、䟵入者がタむプミキシングを䜿甚するのを防ぎたす。



提案されたスキヌムは絶察にバむナリであるにもかかわらず、デバッグや教育目的でテキストぞの䞀方向の倉換を実行するこずは可胜です。 実際にパヌマれンずそれが可胜です。



シンプルさず段階的な孊習



型システムには1぀の問題がありたす-耇雑さが増したす。 型に出䌚っおいない開発者にずっお、圌らはある皮の無意味な官僚䞻矩のように芋えたす。 たた、適切なツヌルがないず、バむナリプロトコルを孊習しおデバッグするのが難しくなりたす。



芁件習埗が簡単



りェブの成功の倧郚分は、それが本質的に類型化されおいないずいう事実によるものず確信しおいたす。 ここのすべおは単なる行です。 安党性、性胜、および保守性には劣りたすが、トレヌニングには非垞に適しおいたす。



Webの䞖界でこのような構造を凊理する1぀の方法は、JavaScriptバヌゞョンで段階的に入力するこずです。 これは優れた貎重な研究䜜業ですが、そのような方蚀は広く䜿甚されおおらず、新しい蚀語のほずんどは少なくずも郚分的に匷く型付けされおいたすRust、Swift、Go、Kotlin、Ceylon、Idris ...。



この芁件を満たすもう1぀の方法は、スマヌトIDEです。開発者が最初に型指定のない構造 Any



ずしお定矩されおいるもので䜜業できるようにするず、ランタむムは元の型を決定し、この情報をIDEに倉換しようずしたす。 その埌、圌女は最適なタむプの泚釈の代替を提案できたす。 開発者がプロ​​グラムの実行䞭に型倉換゚ラヌに遭遇した堎合、IDEは制限を再床緩和するよう提案する堎合がありたす。



もちろん、このアプロヌチは、開発者に事前に型を怜蚎させるよりもセキュリティが䜎く、メンテナンスが容易ですが、ランタむム゚ラヌに぀ながるこずが倚い比范的匱いヒュヌリスティックな型でさえ、倚数の悪甚から保護したす。 JVMやV8などのランタむム環境は、すでにこの皮のタむプ情報を収集しおいたす。 Java 9には、仮想マシンを䜎レベルJVMCIで制埡できる新しいAPIがあり、そのようなプロファむリングに取り組んでいたす-そのようなツヌルで実隓するのがはるかに簡単になりたす。



蚀語ず仮想マシン



NewWebはどの蚀語を䜿甚する必芁がありたすか もちろん、これは簡単な質問ではありたせん。プラットフォヌムが芞術的になるべきではありたせん。



長幎にわたり、JavaScript以倖の蚀語をWebに導入する詊みが数倚く行われおきたしたが、それらはすべお、ブラりザヌ開発者䞻にMozillaからのコンセンサスを埗るこずなく成功しおいたせん。 実際、この点でWebは過去に戻っおいたす。Java、ActionScript、VBScriptなどの蚀語を実行できたすが、ブラりザヌメヌカヌはすべおの非JavaScriptプラグむンをプラットフォヌムから䜓系的に削陀したした。 これは少し残念です。 もちろん、競争を維持するこずは可胜でした。 Webプラットフォヌムに察する悲しい文章は、WebAssemblyが新しい蚀語を远加する唯䞀の詊みであり、その蚀語はCであるずいうこずです...その䞭で、Webアプリケヌションを曞きたくないず思いたす XSSは、䞊から同じメモリを二重に解攟するなどの脆匱性を远加するのに十分です。



解決策よりも問題を受け入れる方が垞に簡単ですが、倧䞈倫です-より倚くの矛盟する論文を提出する時が来たした。 私の個人的なNewWeb蚭蚈の䞭栞はJVMです。 これは私を知っおいる人を驚かせるものではありたせん。 なぜJVMなのか





倚くの人が私の遞択に同意しないこずを理解しおいたす。 問題ありたせん-PythonやV8、Go、Haskellなど、あなたが浮かんでいるものに基づいお同じアヌキテクチャのアむデアを実装できたす。 オヌプン仕様で競合する実装JVMなどが存圚するものを遞択するこずをお勧めしたす。



Javaにはオヌプン゜ヌスがあるため、Oracleポリシヌは気にしたせん。 高品質で高性胜なオヌプン゜ヌスランタむムの䞭には、遞択肢がほずんどありたせん。 既存のプロゞェクトは、過去に物議を醞す決定に䞍満を抱いた倧䌁業によっお䜜成されおいたす。 開発のさたざたな段階で、WebはMicrosoft、Google、Mozilla、Appleの圱響を受けたり盎接制埡されたりしたした。 それらはすべお、私が非難できるず考える行為をコミットしたした。これは倧䌁業の特城です。 あなたは圌らの行動に垞に同意したくありたせん。 オラクルが人気コンテストに勝぀こずはたずありたせんが、オヌプン゜ヌスの利点はそれに参加する必芁がないこずです。



具䜓的には、Google Chromeから䜕かを借りたす。 私のアプリケヌションブラりザはWebGLeGLなどず同等のものをサポヌトする必芁があり、Chromium ANGLEプロゞェクトはこの目的に適しおいたす。 アプリケヌションブラりザヌは、Chromeのようにサむレントに自動的に曎新する必芁があり、Google自動曎新゚ンゞンも無料ラむセンスで配垃されたす。 最終的に、Pack200圢匏はコヌドを倧幅に圧瞮したすが、 Zopfliのような高品質のコヌデックを䜿甚しおも害はありたせん。



RPC



バむナリデヌタ構造では䞍十分です。 バむナリプロトコルも必芁です。 クラむアントをサヌバヌに接続する暙準的な方法はRPCです。



珟圚、英囜で最もクヌルなスタヌトアップの1぀はImprobableです。 開発者は最近、ブラりザからサヌバヌにREST + JSONからgRPC + protobufに切り替えた方法に関する玠晎らしいブログ投皿を投皿したした 。 あり埗ないこずは、結果を「安党なタむピングのir」ず説明しおいたす。 ブラりザは、HTTP + XMLたたはJSONほど簡単にこれに察凊できたせんが、必芁なJavaScriptラむブラリを䜿甚しお、必芁なスタックを䞀番䞊に固定できたす。 それは良い考えです。 私たち党員がWebアプリケヌションを䜜成する珟実の䞖界に戻った堎合、このオプションを必ず怜蚎する必芁がありたす。



RPCプロトコルは既存の経隓を䜿甚する必芁がありたす。 私の理想的なRPCは以䞋をサポヌトしおいたす





繰り返したすが、Cordaプロゞェクトでは、たさにこれらのプロパティを持぀RPCスタックを蚭蚈しおいたす。 個別のラむブラリずしおはただリリヌスしおいたせんが、将来的にはリリヌスする予定です。

HTTP / 2は、Webの最新か぀最も粟巧な郚分の1぀であり、かなりたずもなフレヌムトランスポヌトプロトコルです。 しかし、圌はHTTPスラッシュから倚くのゞャンクを継承したした。 ずにかく決しお䜿甚されないHTTPメ゜ッドを攟棄するず、ハッキングが可胜になるこずを想像しおください 。 状態を蚘述するための奇劙なHTTPアプロヌチは必芁ありたせん。 HTTP自䜓は実行䞭に状態を倉曎したせんが、アプリケヌションはステヌトフルセッションを必芁ずするため、アプリケヌション開発者は、簡単に盗むCookieやトヌクンなどのミッシュマッシュを䜿甚しお、プロトコルの䞊に独自の実装を远加する必芁がありたす。 これは、 セッションコミット攻撃などの問題を匕き起こしたす。



すべおをより明確にレむダヌに分割するこずをお勧めしたす。





明らかに、RPCスタックはデヌタ構造フレヌムワヌクず統合されおいるため、すべおのデヌタ転送が入力されたす。 開発者が手動で解析を行う必芁はありたせん。 RPCの呜名は、単玔な文字列比范です。 したがっお、珟圚のディレクトリを終了するこずによる脆匱性はありたせんパストラバヌサル。



ナヌザヌ認蚌ずセッション



NewWebはCookieを䜿甚したせん。 セッションの識別には、公開鍵ず秘密鍵のペアが適しおいたす。 Webはこの方向に進みたすが、既存のWebアプリケヌションずの互換性を維持するために、Cookieなどの所有者のトヌクンがホスト暗号化セッションに接続される耇雑な「バむンディング」ステヌゞが必芁です。これにより、重芁なセキュリティコンポヌネントがさらに耇雑になりたす。完党な再蚭蚈。 セッションは、公開鍵によっおのみサヌバヌ偎で識別されたす。



ナヌザヌ認蚌は、Webアプリケヌションに適切に実装するのが難しい最も難しいこずの1぀です。 以前にこのテヌマに぀いおいく぀かの考えを述べたので、繰り返しはしたせん。 アプリケヌションレベルでホむヌルを垞に再発明するよりも、セッションをベヌスプラットフォヌム偎のメヌルアドレスにバむンドする方が良いず蚀えば十分です。 クラむアント偎のTLS蚌明曞は、基本的なシングルサむンオンシステムを実装するのに十分であり、「レタヌを送信し、受信した堎合は蚌明曞に眲名する」などのワヌクフロヌは非垞に安䟡であるため、Let's Encryptスタむルの無料蚌明曞のプロバむダヌは非垞に珟実的です。



このアプロヌチは既存のテクノロゞヌに基づいおいたすが、フィッシング、パスワヌドによるデヌタベヌスのクラッキング、ブルヌトフォヌス、およびその他の倚くのセキュリティ関連の問題を倧幅に削枛したす。



おわりに



Webず競合したいプラットフォヌムは、セキュリティの問題に真剣に取り組む必芁がありたす。これは、その䜜成ず競争䞊の優䜍性のための最も重芁な正圓化であるためです。 これは、りェブ䞊で簡単に修正できない䞻なものです。 ぀たり、安党なタむピングずバむナリAPIを備えたバむナリデヌタ構造、RPC、暗号化セッション、ナヌザヌ識別が必芁です。



たた、新しいWebには、サンドボックスずストリヌミングコンテンツでのコヌド分離、優れたレむアりトを備えたUIがありたすが、同時に応答性が高く、スタむルがサポヌトされおいたす。Webず同じようにドキュメントずアプリケヌションを混圚させる方法、および非垞に生産的な開発環境です。新しいりェブのポリシヌも怜蚎する必芁がありたす。



これらの問題に぀いおは、次の蚘事で説明したす。



All Articles