「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript におけるクロスサイト リクエスト フォージェリ (CSRF) の理解と防止

JavaScript におけるクロスサイト リクエスト フォージェリ (CSRF) の理解と防止

2024 年 11 月 8 日に公開
ブラウズ:711

Understanding and Preventing Cross-Site Request Forgery (CSRF) in JavaScript

導入

進化し続ける Web セキュリティの状況において、クロスサイト リクエスト フォージェリ (CSRF) は依然として重大な脅威であり、Web アプリケーションの整合性とセキュリティを確保するために開発者は対処する必要があります。このブログ投稿では、CSRF とは何か、アプリケーションにどのような影響を与える可能性があるのか​​を詳しく説明し、JavaScript を使用して CSRF 攻撃を防ぐための実践的なソリューションを提供します。最後には、CSRF と、この一般的なセキュリティ脆弱性からアプリケーションを保護する方法をしっかりと理解できるようになります。

CSRFとは何ですか?

クロスサイト リクエスト フォージェリ (CSRF) は、ユーザーをだまして、認証されている Web アプリケーション上でアクションを実行させる攻撃の一種です。特定の Web サイトに対するユーザーの信頼を利用するクロスサイト スクリプティング (XSS) とは異なり、CSRF はユーザーのブラウザに対する Web サイトの信頼を利用します。

CSRF 攻撃の仕組み

CSRF 攻撃には通常、次の 3 つの主要なステップが含まれます:

1.被害者の認証: 被害者は正規の Web サイト (銀行など) にログインします。

2.悪意のあるリクエスト: 攻撃者は被害者をだまして悪意のあるサイトにアクセスさせ、被害者に代わって正当なサイトにリクエストを送信します。

3.実行: リクエストは認証されたユーザーからのものであるように見えるため、正規のサイトがリクエストを処理し、その結果、資金の送金やアカウント詳細の変更などの望ましくないアクションが発生します。

CSRF 攻撃の例

銀行のウェブサイトで単純な GET リクエストを介して送金できるシナリオを考えてみましょう:

Click here to win $1000!

被害者が銀行口座にログインしているときにこのリンクをクリックすると、被害者の同意なしに送金が実行されます。

CSRF攻撃の防止

CSRF 攻撃を防ぐために、開発者はいくつかの戦略を実装できます:

1.シンクロナイザー トークン パターン (CSRF トークン)
2. SameSite Cookie
3. Cookie を二重送信

1. シンクロナイザー トークン パターン (CSRF トークン)

CSRF 攻撃を防ぐ最も効果的な方法の 1 つは、CSRF トークンを使用することです。 CSRF トークンは、サーバーによって生成され、クライアントに送信される、一意の秘密の予測不可能な値です。このトークンは、クライアントによる状態変更リクエストに含める必要があります。

段階的な実装:

1. CSRF トークンを生成します:

const generateCSRFToken = () => {
    return crypto.randomBytes(24).toString('hex');
};

2. CSRF トークンをクライアントに送信します:

HTML フォームに、CSRF トークンを隠しフィールドとして含めます:

3.サーバー上の CSRF トークンを検証します:
サーバー側で、状態を変更する各リクエストのトークンを検証します:

const validateCSRFToken = (req, res, next) => {
    const token = req.body.csrf_token;
    if (token === req.session.csrfToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

2. SameSite Cookie

Cookie の SameSite 属性は、クロスサイト リクエストで Cookie を送信する方法を制御することで、CSRF 攻撃を軽減できます。

res.cookie('session', 'value', { sameSite: 'Strict' });

3. Cookie を二重送信する

二重送信 Cookie メソッドでは、CSRF トークンを Cookie とリクエスト パラメーターの両方として送信します。

段階的な実装:

1. CSRF トークンを Cookie として設定します:

res.cookie('csrfToken', csrfToken, { httpOnly: true });

** リクエストにトークンを含めます: **

** 3. サーバー上のトークンを検証します: **

const validateCSRFToken = (req, res, next) => {
    const token = req.cookies.csrfToken;
    const bodyToken = req.body.csrf_token;
    if (token && token === bodyToken) {
        next();
    } else {
        res.status(403).send('CSRF validation failed');
    }
};

結論

クロスサイト リクエスト フォージェリ (CSRF) は、Web アプリケーションのセキュリティを侵害する可能性がある深刻な脅威です。 CSRF 攻撃の仕組みを理解し、CSRF トークン、SameSite Cookie、二重送信 Cookie などの強力な防御手法を実装することで、この一般的な脆弱性からアプリケーションとユーザーを保護できます。安全で確実なユーザー エクスペリエンスを確保するために、開発プロセスでは常にセキュリティのベスト プラクティスを優先してください。

これらの CSRF 防止テクニックを今すぐ JavaScript アプリケーションに実装し、ユーザーのデータを保護してください。以下のコメント欄であなたの考えや経験を共有してください。 Web セキュリティに関するその他のヒントやテクニックについては、ぜひフォローしてください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/rigalpatel001/ Understanding-and-preventing-cross-site-request-forgery-csrf-in-javascript-2ne0?1 侵害がある場合は、study_golang@163 までご連絡ください。 .comを削除してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3