1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptで引用符をエスケープする

2022-04-05 06:05:07

質問

あるデータベースから値を出力しています(一般には公開されていませんが、会社のユーザーが入力できるようになっています)。 XSS ).

このようなタグを出力しようとしています。

<a href="" onclick="DoEdit('DESCRIPTION');">Click Me</a>

DESCRIPTIONは、実際にはデータベースからの値で、次のようなものです。

Prelim Assess "Mini" Report

という単語の後のスペースで、FirefoxはJavaScriptの呼び出しを切断してしまうのです。 評価する そのため、さまざまな問題が発生しています。

明らかな答えを見逃しているに違いないのですが、どうしてもわからないのです。

どなたか、私のバカさ加減を指摘してください。

以下は、HTMLページ全体です。 ASP.NET のページがありますが、これを解決するために、問題のコード以外をすべて削除しました)

<html>
    <body>
        <a href="#" onclick="DoEdit('Preliminary Assessment \"Mini\"'); return false;">edit</a>
    </body>
</html>

解決方法は?

に書き出す文字列をエスケープする必要があります。 DoEdit を使用して、ダブルクオート文字を削除してください。このため onclick HTML属性が早く閉じてしまう。

JavaScript のエスケープ文字を使用する。 \ は、HTMLコンテキストでは十分ではありません。二重引用符を適切なXMLエンティティ表現に置き換える必要があります。 &quot; .