-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
XSS 対応 #1101
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@drill-lancer ご対応ありがとうございます!
とりあえず1点気づいたことをコメントします。
@@ -241,16 +241,16 @@ public function options_page() { | |||
} | |||
|
|||
public function option_sanitaize( $option ) { | |||
$option['contact_txt'] = stripslashes( $option['contact_txt'] ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@drill-lancer この部分でstripslashesを削除しているので、例えば Vektor's といった文字列を保存しようとすると、バックスラッシュがテキストエリアに残り、それに気づかず保存すると、倍々にバックスラッシュが増えてしまいます。
ご存知のことかもしれませんが、
WordPressは $_POSTに対して、add_magic_quotes()をかけます。$_POSTには Vektor\'s という値で入ってきます。ですから、これに対して、wp_unslashやstripslashesで戻す処理は必要かと。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CTA関連でも同様の修正がありますが、こちらはupdate_metadata() 内で、wp_unslashが自動的にかかるのでバックスラッシュを外す処理は不要です。これに関してはstripslashesを通すのは無意味となるので、外して正解だと思います。
@mthaichi |
@@ -545,7 +552,7 @@ public static function render_cta_content( $id ) { | |||
wp_reset_postdata(); | |||
|
|||
// wp_kses_post でエスケープすると outerブロックが出力するstyle属性を無効化される. | |||
return do_blocks( do_shortcode( $content ) ); | |||
return do_blocks( do_shortcode( wp_kses_post( $content ) ) ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@drill-lancer コメントに書いてある通り wp_kses_post でエスケープすると outerブロックが出力するstyle属性を無効化される ので、style 属性が消されないように wp_kses を作るなどして対応してください。
@kurudrive |
@drill-lancer ありがとうございます! |
@kurudrive @drill-lancer あと、XSSとまではいかないので must ではないのですが、 「電話番号」については、太字にしたいとか色をつけたいというニーズがあるので、wp_kses_postで良いかもしれません。 余計なHTMLを許可しているのはあまり印象が良くないので、この機会に修正頂くと良いと思います。 面倒な修正、ありがとうございます! |
@kurudrive @drill-lancer "echo $" でプロジェクト全体に全文検索かけて、ひっかかった変数が、入力由来のものであればエスケープをかけるという感じで残りを潰していってよいと思います。 |
i タグで書くものと思って wp_kses_post にしています。 |
@drill-lancer なるほど、でもここは fas fa-phone-square とクラス名を書く感じではないでしょうか。 長い目でみても、バリデーションやサニタイズを厳しめにしたほうがいいので、HTMLいれる必要がないフィールドは wp_strip_all_tags でHTML全削除したほうが良いと私は思います。ご面倒をおかけしますが(・人・) |
@mthaichi @drill-lancer アイコンの部分はもともと クラス名入力だけだったものを後から i タグで入力してもらうように仕様変更しているケースもあるので、少なくとも i タグの許可は必要です(・w・ |
@kurudrive @drill-lancer なるほど、tel_iconだけですが直してみましたー。 |
すみません。私このあと用事がございまして、@kurudriveさんが見てOK なら良いと思います。🙏 |
@drill-lancer @mthaichi ありがとうございました! |
チケットへのリンク / 変更の理由(元のissueがあればリンクを貼り付ければOK)
#1100
どういう変更をしたか?
上記に潜んでいた XSS を潰しました
P.S.
メイン設定については潰れているようでした。
実装者はレビュワーに回す前に以下の事を確認してチェックをつけてください。
ソースコードについて
デザイン・UI
プログラムの変更の場合
テストを書かないのは普通ではありません。書けるテストは極力書くようにしてください。
書いていない場合は書かない理由を記載してください。
その他
変更内容について何を確認したか、どういう方法で確認をしたかなど
上記の input[type="text"] に
"><script>alert(0)</script>
を入れてアラートが出ないのを確認しました。確認URL
ローカル環境
レビュワーの確認方法・確認する内容など
"><script>alert(0)</script>
を入れてアラートが出ないこと。上記の確認をお願いします。
レビュワーに回す前の確認事項
レビュワー向け
確認して変更が反映されていない場合の確認事項