「改竄 JS(かいざん JS)」とは、本来のWebページで動作しているJavaScriptコードを改変(改ざん)して、意図しない動作をさせるためのスクリプトのことを指します。
つまり、ユーザーがWebブラウザ側で自由にJavaScriptを書き換えたり追加したりして、本来の入力チェックや制御をすり抜ける行為です。
JavaScriptはクライアント(ユーザーのブラウザ)側で動作します。
ユーザーはブラウザの開発者ツールを使って、読み込まれたJavaScriptコードを無効化したり書き換えたりできます。
また、独自のJavaScriptを実行することも可能です(例:コンソールに直接打ち込む、ブックマークレット、外部スクリプトを読み込む)。
本来のHTMLフォームには次のようなチェックがあるとします:
JavaScript
if (age < 18) {
alert("18歳未満は登録できません");
return false;
}
攻撃者はブラウザの開発者ツールで、このコードを削除したりreturn false;
をreturn true;
に書き換えて送信すれば、未成年でも送信できてしまいます。
ブラウザのコンソールで次のように直接フォーム送信:
JavaScript
document.querySelector("form").submit();
→ 本来のチェック関数をすべてスキップして送信できる。
cURL や Python の requests
を使って、自分でHTTPリクエストを作成して送信する。
→ JavaScript自体が実行されないので、HTMLやJSのバリデーションは全て無視される。
HTMLの属性(required
, min
, max
)やJavaScriptによるバリデーションは「ユーザーが間違えないように手助けするため」のもの。
攻撃者は簡単にバイパスできるので、サーバー側のチェックが必須です。