正規表現をバイパスしてJavaScriptを実行することはできますか?
<script>
function json(a){
if (/^\s*$/.test(a) ? 0 : /^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g, "@").replace(/"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, "")))
try{
return eval("(" + a + ")")
} catch (b) {}
g(Error("Invalid JSON string: " + a))
}
json(window.name);
</script>
私の これに対する即時の反応 は、いくつかの理由でポジティブではありませんでした。
eval()
によるJSONのJavascript解析は セキュリティの脆弱性を考慮 です。JSON.parse()
およびJSON.stringify()
を介した適切なネイティブJSON解析。eval()
を使用しません。全体として、正規表現アプローチは過剰に設計されており、安全ではなく、見当違いで、冗長です。すでに解決済みの問題を解決しようとしています。 Daveにしないでください。 適切なJSON解析関数とライブラリを使用できます。
この (true");alert(9);//"
有効なJavaScriptステートメントに非常に近く、正規表現で受け入れられます。
あなたの正規表現に注意してください、誰かがそれをバイパスすることができます。