XSS を軽減し、文字を正しく表示するために、いつ、どのようにエンコードするかを理解し始めています。
ただし、いくつかの html をページ、具体的にはクエリ文字列に書き込むクライアント側スクリプト (JavaScript) があります。
このために、javascript の "encodeURIComponent" 関数を使用して、外部 json ファイルに保存されているユーザー入力の処理を支援しました。
これらの値をどのようにエンコードしようとしても、山かっこが値のいずれかにある場合、毎回実際にページがロックされますが、json 値に山かっこがない場合は完全に機能することに気付きました。
最初にhtmlエンコーディングを試してから、「encodeURIComponent」を使用して、これを逆に試しました。JavaScript には生来の html エンコーダーがないため、独自の簡単なエンコーダーを作成しました。ここです:
function htmlEncode (input)
{
while(input.indexOf("&") > -1)
{
input = input.replace("&", "&")
}
while(input.indexOf("<") > -1)
{
input = input.replace("<", "<")
}
while(input.indexOf(">") > - 1)
{
input = input.replace(">", ">")
}
while(input.indexOf("\"") > -1)
{
input = input.replace("\"", """)
}
while(input.indexOf("'") > -1)
{
input = input.replace("'", "'")
}
while(input.indexOf("/") > -1)
{
input = input.replace("/", "/")
}
return input
}
そして、値をページに書き込むコードの JavaScript スニペットを次に示します (html エンコーダーなし):
stringCompiler = "/Event htms/Event.cshtml?title=" + encodeURIComponent(jsonObj.events[i].title) +
"&explanation=" + encodeURIComponent(jsonObj.events[i].explanation) + "&dateString=" +
encodeURIComponent(jsonObj.events[i].dateMonth) + "-" + encodeURIComponent(jsonObj.events[i].dateNumber) + "-" + encodeURIComponent(jsonObj.events[i].dateYear);
残念ながら、それ以上の情報を提供することはできません。なぜなら、それがロックアップすると、ハードにロックアップし、診断ツールを実行できない (右クリックやスクロールさえできない) からです。
何かを 2 回エンコードするのはばかげていると思いましたが、「encodeURIComponent」だけを使用して山かっこがブラウザーをロックしたとき、html エンコードも試してみようと考えましたが、どちらの方法でもロックアップします。
私にできることはありますか、またはjsonファイルに保存するときに山括弧を防ぐ必要がありますか?
-----------------------これは私が以下の機能で見ているものです-----------------