Asp.NetコアWebアプリケヌションずAPIを匷化するための完党ガむド

敬瀌、カブロビテス「CASP.NET Core Developer」コヌスの開始に先立ち、圹立぀ガむドの翻蚳を甚意したした。










.Net Coreを 曎新するたびに、Microsoftは、.Net Coreが、匷力なデスクトップ、モバむル、クラりド、およびWebアプリケヌションの開発に利甚できる最も匷力で甚途が広く完党なフレヌムワヌクであるこずを蚌明したす。デスクトップたたはモバむルアプリケヌションずは異なり、Webアプリケヌションはパブリックアドレスで実行されたす。これが、Webアプリケヌションのセキュリティが非垞に重芁である理由の1぀です。Asp.Net Coreはセキュリティのベストプラクティスを念頭に眮いお蚭蚈されおいたすが、Asp.NetCoreのリリヌスの前埌に泚意する必芁のあるいく぀かの脆匱性がただありたす。アプリケヌション。



この蚘事では、Asp.Net CoreWebアプリケヌションのいく぀かのセキュリティギャップ ずその可胜な゜リュヌションに぀いお説明したす。のが重芁なのいく぀か列挙しおみたしょうのためのセキュリティの考慮事項圓瀟の.Net Coreアプリケヌションを。



  1. ログむンをより安党にする
  2. 暗号化された機密デヌタのみを転送する
  3. 終了時にCookieをクリアするこずを忘れないでください
  4. 垞にSSLを䜿甚する
  5. 機密デヌタをデヌタベヌスに明瀺的に保存しないでください
  6. 監査蚌跡ずロギングは非垞に重芁です
  7. 元の技術的゚ラヌを゚ンドナヌザヌに公開しないでください
  8. クロスサむトスクリプティングXSS
  9. .NetCoreのバヌゞョンを非衚瀺にしおみおください
  10. クロスサむトリク゚スト停造CSRF
  11. LINQはSQLむンゞェクションから保護できたす
  12. デシリアラむズ䞭にチェックを远加する
  13. フレヌムワヌクずラむブラリの最新バヌゞョンを垞に維持する


1.ログむンをより安党にしたす



ログむンペヌゞは、あらゆるアプリケヌションの正面玄関です。管理パネルのようなアプリケヌションを考えおみたしょう。暩限のない人がアプリケヌションにアクセスした堎合、その人はシステム党䜓を制埡できたす。したがっお、最初のステップは垞にログむンをより安党にするこずです。





アプリケヌションの゚ントリポむントを保護するためのヒントを次に瀺したす。



USE COMPLEX、アカりント



は䜿甚しないでくださいナヌザ名などの管理やパスワヌドなどの12345、たたは自分の名前や個人情報を。誰でもこの欠陥を利甚するこずができ、ボットは信じられないほど短時間でそのような資栌情報を取埗するこずができたす。ブルヌトフォヌスからあなたのロゎを



保護する



ブルヌトフォヌスは最も䞀般的なタむプの攻撃であり、さたざたなアルゎリズムを䜿甚しおブルヌトフォヌスのナヌザヌ名ずパスワヌドの組み合わせで構成されたすログむン資栌情報を掚枬するため。さらに、ログむンを䜕床も詊行するずサヌバヌが過負荷になり、アプリケヌションの実際のナヌザヌにDoSサヌビス拒吊ずダりンタむムが発生する可胜性がありたす。



ブルヌトフォヌス攻撃は、単玔なナヌザヌ名ずパスワヌドを掚枬するのにかかる時間が短くなりたすが、些现なブルヌトフォヌス攻撃を䜿甚しお耇雑な組み合わせを掚枬するこずもできたす。



では、Asp.Netアプリケヌションをブルヌトフォヌス攻撃からどのように保護したすか総圓たり攻撃



を防ぐためのヒントを次に瀺したす。



  • ボットはただcaptchaを凊理できないため、ログむンペヌゞでCaptchaを䜿甚したす。
  • IP .
  • , admin user, .
  • , (A-Z a-z), (0-9) (!, @,., #, $,%, ^, &, * ..).


䞊蚘の掚奚事項を実装する方法は



䞊蚘のガむドラむンは、初心者のAsp.Net Core開発者にずっおは実装が難しいように思われるかもしれたせんが、心配しないでください。ブルヌトフォヌス攻撃から䜜業を保護するのに圹立぀優れたHackerSprayラむブラリがありたす。あなたがする必芁があるのはそれを蚭定するこずです。垞に.NETCOREIDを䜿甚するAsp.NetCoreには、アプリケヌションを保護するための倚くの組み蟌みラむブラリずツヌルがありたす。承認には、セキュリティのベストプラクティスに埓っおログむンず登録を完党にカスタマむズできるMicrosoftのすばらしい実装もありたす。











2.機密デヌタを暗号化された圢匏でのみ転送する



確認のために、パスワヌドやクレゞットカヌドの資栌情報 などの機密情報をサヌバヌに明瀺的に送信しないでください。ハッカヌは、サヌバヌに送信する前にデヌタを傍受するこずで、このデヌタを盗むこずができたす。



必ず䜿甚するハッシュアルゎリズムのようなMD5やSHA256をパスワヌドずするために暗号化アルゎリズムなどのAESたたはDES䜿甚しお、たずえば、クラむアント偎でのjQueryを。





3.終了時にCookieをクリアするこずを忘れないでください



Asp.Net Core アプリケヌションにログむンするずき、ナヌザヌがログアりトするたでナヌザヌのログむンを維持するために、必芁なデヌタをセッションに保存したす。䞀郚のアプリケヌションでは、ナヌザヌがログむンペヌゞでサむンむンしたたたにするこずを瀺すチェックボックスをオンにしたずきに、セッションタむムアりトを蚭定したすが、蚭定しない堎合もありたす。



同時に、ログむンしたナヌザヌを远跡するために、AspNetCore.SessionCookieがブラりザヌに远加されたす。







したがっお、ログアりトするずきは、ハッカヌがいるため、アプリケヌションによっお䜜成されたCookieもブラりザから削陀する必芁がありたす。この情報を䞍正なログむンに䜿甚する可胜性がありたす。これは、セッション固定攻撃ずも呌ばれたす。



4.垞にSSLを䜿甚する



SSLは、の略セキュア・゜ケット・レむダヌ。これは、暗号化し、非垞に耇雑なキヌで、クラむアントずサヌバ間の通信を。Asp.Net CoreアプリケヌションのStarup.csに、垞に安党なCookieポリシヌを䜿甚する



ように指瀺するだけです。





5.機密デヌタをデヌタベヌスに明瀺的に保存しないでください



ナヌザヌデヌタを保存するためのほずんどすべおのWebアプリケヌションにはデヌタベヌスが必芁です。デヌタベヌスは、ほずんどの堎合、ハッカヌがこのナヌザヌデヌタを盗むために正確に攻撃したす。したがっお、パスワヌドや請求仕様などのナヌザヌの資栌情報をデヌタベヌスに非垞に詳现か぀クリヌンな方法で保存するずしたす。デヌタベヌスぞの䞍正アクセスを取埗した人は誰でも、このデヌタを自分の利己的な目的に䜿甚できるこずがわかりたした。



したがっお、垞にハッシュたたは暗号化を䜿甚しお機密デヌタをデヌタベヌスに保存しおください。





6.監査蚌跡ずロギングは非垞に重芁です



アプリケヌションで䜕が起こっおいるかを把握するには、監査蚌跡たたはアクティビティログが非垞に重芁です。誰かがログむン詊行の倱敗を倚数生成した堎合、管理者はそのこずを通知する電子メヌルを受信する必芁がありたす。



たずえば、ナヌザヌがアプリケヌションナヌザヌの新しいむンスタンスを䜜成する堎合でも、既存のむンスタンスの圹割を倉曎する堎合でも、そのすべおのアクションをAsp.netCoreアプリケヌションのログに反映する必芁がありたす。







7.元の技術的゚ラヌを゚ンドナヌザヌに公開しないでください。



䞀郚の䟋倖は、アプリケヌションに関する重芁な情報を明らかにしたり、゚ンドナヌザヌに数行のコヌドを衚瀺したりする堎合がありたす。攻撃者は賢い人であり、䟋倖によっお提䟛された情報を䜿甚しおアプリケヌションをハッキングするこずができたす。



したがっお、アプリケヌションを本番環境にデプロむする前に、すべおのタむプの䟋倖に぀いおナヌザヌに゚ラヌを衚瀺するペヌゞを䜜成し、アプリケヌションのログに゚ラヌを正しく保存したこずを確認しおください。







8.クロスサむトスクリプティングXSS



でXSSクロスサむトスクリプティング攻撃、ハッカヌがナヌザヌの資栌情報やその他の機密デヌタを盗むために、入力フィヌルドを悪意のあるスクリプトを送信したす。



アプリケヌションに補品を远加するためのフォヌムがあるずしたしょう。ハッカヌは新しい補品を远加し、補品の説明フィヌルドにJavaScriptコヌドスニペットを挿入するだけです。アプリケヌションがこの補品を補品ペヌゞに説明ずずもに衚瀺するず、ハッカヌの悪意のあるスクリプトも実行され、必芁なデヌタを受信したす。



以䞋の画像は、CloudflareのXSS蚘事で芋぀かりたした。これにより、XSSをより簡単に送信できたす。







では、Asp.NetCoreアプリケヌションをクロスサむトスクリプト攻撃から保護するにはどうすればよいでしょうか。



次のヒントに埓っお、Webアプリケヌションを保護できたす。



  • クラむアント偎ずサヌバヌ偎の䞡方で正芏衚珟を䜿甚し、怜蚌枈みのデヌタのみをデヌタベヌスに保存したす。
  • Razorを䜿甚したHTML暗号化は、このようなスクリプトの凊理に圹立ちたす。
  • XXSはURL暗号化でも実行できるため、URLパラメヌタヌを確認し、UrlEncoderで暗号化したす。


これは、XSSからアプリケヌションを保護するこずに関するMicrosoftのすばらしい蚘事です。



9. .NetCoreバヌゞョンを非衚瀺にしおみおください



ブラりザから送信された芁求に応答しお受信するサヌバヌからの すべおのHTTP応答には、アプリケヌションが開発されたバヌゞョンに関する情報が垞にありたす。このような情報により、攻撃者は䜜業しやすくなり、時間を節玄し、特定のバヌゞョンの.Netを暙的にするこずができたす。.Net Frameworkのバヌゞョンに関する情報を非



衚瀺にするこずで、ハッカヌにずっおより倚くの障害を䜜成し、䜜業をより困難にする必芁がありたす。.NetCoreバヌゞョンを非衚瀺にする方法は次のずおりです。







  • X-Powered-Byを応答ヘッダヌから削陀したす。
  • <a href="https://www.nuget.org/packages/NWebsec.AspNetCore.Middleware/">NWebsec.AspNetCore.Middleware


AddServerHeader = falseサヌバヌを削陀するために むンストヌルしたすKestrelヘッダヌ。



X-Poweredを削陀できたす-でこの単玔なコヌドスニペットを䜿甚するこずによりweb.config



<httpProtocol>
 <customHeaders>
   <remove name="X-Powered-By" />
 </customHeaders>
</httpProtocol>


10.クロスサむトリク゚スト停造CSRF



あなたは属性の目的を知っおいたす[ValidateAntiForgeryToken]あなたの䞭の.NetコアのWeb APIをおそらくasp-antiforgery="true"、cshtmlファむル内のコヌドにも気づいたでしょうか。



たず、CSRFCross-Site Request ForgeryたたはXSRFを理解する必芁がありたす。次に、䞊蚘のタグず属性の目的を理解しようずしたす。



銀行口座のeバンキングを䜿甚しお友達に送金しおいるずしたしょう。突然、かわいいアバタヌを持った女性からFaceBookのリンクが届きたす。このリンクを開くず、ここをクリックしお$ 1000を獲埗するように求められたす..。クリックするだけで、ログむンしおeバンキングの䜿甚が蚱可されおいるため、この悪意のあるリンクはスクリプトを実行し、アカりントからハッカヌのアカりントに送金したす。



䞋の画像は、CSRFを明確に瀺しおいたす。







アプリケヌションをCSRFからどのように保護できたすか



asp-antiforgery="true"停造防止トヌクンを䜜成し[ValidateAntiForgeryToken]、トヌクンが有効かどうかをサヌバヌ偎で確認し、クロスサむトリク゚ストの停造からナヌザヌを保護したす。



11.LINQはSQLむンゞェクションから保護できたす



SQLむンゞェクションは、長幎にわたっおナヌザヌデヌタに害を及がすために最も䞀般的に䜿甚されおいる手法の1぀です。



このメ゜ッドでは、ハッカヌは入力フィヌルドにいく぀かの条件付き文字たたは特殊文字を配眮したす。これにより、芁求党䜓が倉曎されたす。



これは、SQLむンゞェクションずは䜕かの良い䟋です。





Asp.Net CoreアプリケヌションをSQLむンゞェクションから保護するにはどうすればよいですか



ここにいく぀かのヒントがありたす



  • ゚ンティティフレヌムワヌクコアを䜿甚する
  • 垞にパラメヌタ化されたク゚リを䜿甚しおください。
  • サヌバヌ偎の入力を垞に怜蚌したす。
  • 保存された手順を䜿甚したす。


12.逆シリアル化䞭にチェックを远加したす



デシリアル化は、オブゞェクトをバむトのストリヌムに倉換するプロセスであるシリアル化の反察です。シリアル化は垞にサヌバヌ偎で実行され、オブゞェクトを転送たたは保存したす。アプリケヌションで受信したデヌタをさたざたな゜ヌスから逆シリアル化したす。





したがっお、私たちは倚くの有害な流れにさらされおいたす。



アプリケヌションを攻撃者から保護するには、逆シリアル化の前埌にデヌタを怜蚌する必芁がありたす。



13.フレヌムワヌクずラむブラリの最新バヌゞョンを垞に維持したす



プロゞェクトで䜿甚されお いるフレヌムワヌクずラむブラリは垞に曎新しおください。攻撃者は垞に脆匱性を芋぀けるため、プロゞェクトで叀いラむブラリを䜿甚しないでください。



プロゞェクトで䜿甚されおいるNuGetパッケヌゞの曎新を確認し、定期的に曎新しおください。





結論



䜕もありたせん100安党な、しかし、我々はベストプラクティスに埓うこずによっお、可胜な限り安党なよう私たちのアプリケヌションを䜜成する必芁がありたす。がネットコアは、最も安党なプラットフォヌムの䞀぀ず考えられおいる、我々はただ我々のアプリケヌションでの掻動を監芖し、悪質な掻動の堎合には迅速な行動を取る必芁がありたす。



私の蚘事を読んでいただきありがずうございたす。Asp.NetCoreアプリケヌションをより安党にするこずを考えるきっかけになるこずを願っおいたす。



䞋蚘のコメント欄にフィヌドバックを残しおいただければ幞いです。



ここにあなたが興味を持぀かもしれないいく぀かの蚘事がありたす








コヌスの詳现






:






All Articles