これは、(予想の域を越えませんが)jQuery、というよりJavaScript(?)では、クロスドメインでのHTTP通信不可のため、擬似的にサーバサイドで回避しています。この対処(出力)が万全でないのかも知れません。
万全でないというか、getcrossdomain.php は世界中の誰からも使用可能となっていて、かつ、取得した HTML をそのまま吐くという仕様のため、非常に危険です。即刻公開を中止し、改善するようお願いします。簡単に各種 XSS 攻撃が可能と思われます。
プラグインの詳細を確認はしていませんが、getcrossdomain.php でリンク先の存在チェックをするならば、404 Not Found になるか否かを返せば、比較的安全になるかと思います。
lilyfanさん、毎度お手数をおかけします。
ご指摘のとおり、XSSの危険性がありましたので修正したものをバージョン0.2としました。
すでに0.1をダウンロードされている方がいらっしゃいましたら、すぐに0.2へアップデートをお願いします。
ご指摘のとおり、XSSの危険性がありましたので修正したものをバージョン0.2としました。
実はこのバージョン 0.2 にも脆弱性が発見されています。作者さんには報告ずみですが、反応がありませんので、注意を喚起しておきます。
# ソースを見れば一発で分かる程度の問題なので、もうちょっと作者さんにはがんばってほしいところです……。
度々のご指摘ありがとうございます。
主に以下の点の修正を施し、XSS対策版の0.3bをリリースいたしました。
・get_file_contents()はphp.iniの設定に依存するため、fsockopen()に変更
・HTTPステータスコードが301と302のときは、リダイレクト先をチェック(fsockopenの影響で必要になった処理)
・明らかに自ドメインの場合のみ取得ソースをecho(入力パラメータ$urlが”/”を含まない場合、末尾に付加)
別件(feedのチェックでJavaScriptエラーでチェック処理が中断)の調査に時間がかかり、XSS対策のリリースが遅くなってしまいました。
未だ、この別件は調査中のため、XSS対策のみを優先してリリースするほうが良いと判断しました。
・明らかに自ドメインの場合のみ取得ソースをecho(入力パラメータ$urlが”/”を含まない場合、末尾に付加)
残念ながら全く無意味な対策です。PHP のセキュリティーに関して相当な知識がない限り、自ドメインチェックのコードを書くのは困難です (わたしでも自信がありません)。少なくとも ereg_replace() を使っていはいけません。もっと勉強しましょう。
Ajax のクロスドメイン制限を越えるスクリプトはセキュリティホールの温床になるため、コンテンツを echo するような機能は一切埋め込むべきではありません。完全に削除されることをおすすめします。
このフォーラムで「危険なプラグインが紹介されている」という事態はふさわしくないと思いますので、ぜひとも根本的な修正をされることを期待します。改善が見られない場合、管理者にトピックの閉鎖 (今後の紹介禁止) を依頼するかもしれません。「背水の陣」でがんばってください。
私の知識不足により、多くの方にご迷惑をおかけしてしまいました。申し訳ありません。
lilyfanさんにアドバイスいただいたとおり、PHPではHTTPステータスコードのみを返し(A)、クロスドメイン制約のかからない自ドメインについては、素直にjQueryのみでチェックするような修正とします。
途中段階では、この対応で改修したバージョンも作っていたのですが、まったく別の問題(B)で諦め、安易に「自ドメインなら」とechoを残してしまいました。
比較的安全と思われる、上記(A)の対処には(B)も未解決であり、しばらく時間がかかると思っておりますので、それまでの間はプラグインダウンロードを閉鎖いたします。