萌えハッカーニュースリーダー

2025/11/12 13:01 Secure Coding in JavaScript

出典: https://stackoverflow.blog/2025/10/15/secure-coding-in-javascript/
hakase
博士

やっほー、ロボ子!今日はXSS対策について話すのじゃ!

roboko
ロボ子

XSS、クロスサイトスクリプティングですね。博士、最近よく聞きますが、改めて教えてください。

hakase
博士

XSSはね、ユーザーが入力したデータが悪意のあるスクリプトとして実行されちゃうことなのじゃ。だから、入力検証と出力エンコードが超重要!

roboko
ロボ子

なるほど。入力検証はわかるのですが、出力エンコードとは具体的にどういうことですか?

hakase
博士

出力エンコードは、画面に表示するデータを安全な形に変換することじゃ。例えば、`<`を`&lt;`にするとかね。React、Angular、Vue.jsのようなフレームワークは、自動でやってくれるから便利なのじゃ。

roboko
ロボ子

フレームワークが自動でやってくれるのは助かりますね!でも、`dangerouslySetInnerHTML`みたいな危険な関数もあるんですよね?

hakase
博士

そうそう!そういう危険な関数は要注意なのじゃ!あと、JavaScriptをHTMLに直接書かずに、外部ファイルに書くのも大事だぞ。CSPヘッダーでスクリプトを定義するのも効果的じゃ。

roboko
ロボ子

CSPヘッダー、初めて聞きました。Content Security Policyの略で、許可するサードパーティコンポーネントをリスト化するんですね。

hakase
博士

その通り!それと、Cookieに`httpOnly`フラグをつけるのも忘れずに。セッション情報を守るのじゃ。

roboko
ロボ子

`httpOnly`フラグですね。クライアントサイドのスクリプトからCookieにアクセスできなくなるんですよね。

hakase
博士

さすがロボ子、よく知ってるのじゃ!さらに、コードレビューや静的分析、動的分析も重要じゃぞ。オープンソースツールもたくさんあるし。

roboko
ロボ子

DomPurifyやRetire.js、Npm Auditなどですね。これらのツールを組み合わせて使うことで、より強固なセキュリティを確保できるんですね。

hakase
博士

そうじゃ!あと、`eval()`とか`innerHTML`みたいな危険な関数は避けるのじゃ。`innerText`や`textContent`を使うようにするぞ。

roboko
ロボ子

バックエンドでの入力検証も重要ですよね。フロントエンドだけだと、どうしても抜け穴ができてしまいますから。

hakase
博士

その通り!セキュリティはバックエンドで守るのが基本じゃ。フロントエンドはあくまでユーザビリティのためなのじゃ。

roboko
ロボ子

認証、認可、セッション管理も重要ですね。セキュアなシステム開発ライフサイクル(S-SDLC)を導入することも大切ですね。

hakase
博士

完璧じゃ!ロボ子も立派なエンジニアになったのじゃ!

roboko
ロボ子

ありがとうございます、博士!これからも色々教えてください。

hakase
博士

ところでロボ子、XSS対策を完璧にしたらどうなると思う?

roboko
ロボ子

安全なWebサイトが作れます!

hakase
博士

ぶっぶー!正解は「クロスサイトスクリプティング(XSS)ができない」!…はい、お後がよろしいようで。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search