discordが気になっていて公式サイトを見ていたのですが、 何気なくディベロッパーツールを開くと、以下のメッセージが表示されていました。
XSSの警告を出してくれるとはとても親切ですよね。
実は文字装飾を施したconsole.log
を見るのは初めてでした。
console.log
はせいぜいテストやデバッグの時に使うくらいなので、読めれば十分ですしね。
このメッセージはCSSで表現していると予想はできるものの、 どのように実装しているのか気になったので、サイト上のソースから追ってみることにしました。
まずは該当の箇所を確認
コンソールでconsole.log
を出力している部分にブレークポイントを設定してみます。
3e169bfb1921f49647a2.js:106
もうすでに1行目のテキストが入ってますね。 ということは2行目も同じ処理の可能性がありますのでステップインしてみます。 すると、それっぽい記述がありました。
n.consoleWarning = function(e) {
console.log("%c" + e.SELF_XSS_HEADER, "color: #7289DA; -webkit-text-stroke: 2px black; font-size: 72px; font-weight: bold;"),
console.log("%c" + e.SELF_XSS_LINE_1, "font-size: 16px;"),
console.log("%c" + e.SELF_XSS_LINE_2, "font-size: 18px; font-weight: bold; color: red;"),
console.log("%c" + e.SELF_XSS_LINE_3, "font-size: 16px;"),
console.log("%c" + e.SELF_XSS_LINE_4.format({
url: "" + location.protocol + window.GLOBAL_ENV.MARKETING_ENDPOINT + "/jobs"
}), "font-size: 16px;")
}
つまり以下のように指定することで、console.log
にもCSSが指定できるみたいです。
console.log("%c 文字列", "CSS")
仕様を確認すると、そのように書かれています。
https://developer.mozilla.org/ja/docs/Web/API/console#Styling_console_output定数も気になって
e.SELF_XSS_HEADER
に"ちょっと待った!"が入っていることが確認出来ましたが、
他にも隠しメッセージがあるかもしれないと思い、SELF_XSS_HEADER
を探しました。
このメッセージはローカライズ用のとても大きなオブジェクトにあるXSSDefenses
というキーに入っていました。
期待した隠しメッセージは特に無さそうでしたが、 エラーメッセージ等はフレンドリーなメッセージで面白いので興味がある方は見てみてはいかがでしょうか。
404エラーページはお洒落でとても好きです。 オズの魔法使いを出してくるところがニクいです。 小さい頃に映画版をよく見たなぁ。