質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

Q&A

解決済

1回答

2627閲覧

TwitterやFaceBookのイイネボタン、クリックジャッキングについて

HiruLow

総合スコア55

セキュリティー

このタグは、コンピューターシステムの安全性やデータの機密性に関連したトピックの為に使われます。

0グッド

2クリップ

投稿2018/08/16 01:45

編集2018/08/19 11:48

ウェブインデント機能はブラウザのXFrameOptionsサポートによりCSRF対策が可能です(別ウィンドウで開く等)

サイトに埋め込みそのオリジンから押せるイイネボタンについてはどのような対策が必要かについてお聞きしたいです。

恐らくログイン時のセッションについてはサーバー側で管理しているとは思いますが、いいねボタンを押した際の挙動としては特に関係ないとは思います・・

SNS側から見て、利用者が意図しないコンテンツへのイイネは望んでいないはずです、もし信頼のおける素敵なサイトに脆弱性が有った場合、Submitボタン等に悪質なコンテンツへのイイネボタンを埋め込む事が出来れば、社会的に信頼のおける人間からの支援を受ける事が可能です。

その対策の一環としてボタン設置にはSNS側のデベロッパーアカウントが必要であり開発者KEYがイイネボタンの設置に不可欠となってはいると思いますが、近年では有名なSNSボタンを設置しているサイトは多いため、問い合わせページやサイトフッター等を見渡せば、他のページから開発者KEYを取得する事が可能な環境が多数です。

こちらの対策を取り入れるにはどのようなものが考えられますでしょうか?

追記:

質問文の解決したい内容が明確ではなかった為補足させていただきます。


解決したい目標としましてはSNSのサービス不正利用の防止です。これはSNS機能をサイト内に埋め込む利用者側の視点とゆうよりはSNS運営側から見た対策になります。

・サイト閲覧者の意図しないイイネクリック防止
・CSRF攻撃によるブラウザ操作を必要としないイイネクリックの防止

考えた対策方法としては以下のようなものになります。

・イイネボタンのCSSレイアウトに問題が無いか検討する
・トークンの埋め込みによるサイト側からのリクエスト確認
・サイト埋め込みトークン名のランダム生成
・リクエストにユーザのマウス操作履歴を格納する

 
・CSSレイアウトの検討についてはJavascriptによりイイネボタンのOpacityチェックや他DOM要素の重なりを検討し、正しい配置がされているかチェックするとゆうものです


・トークンの埋め込みについてはSNSサーバー側で正常に生成されたイイネボタンかチェックをするとゆう意味が有ります


・トークン名のランダム生成については、hidden要素のnameをランダムに生成する事でハッキングを試みる際に必要tokenを把握させないとゆうものです。サーバー側で不定期にトークン埋め込み用input要素のname属性を変更する事でトークンの不正取得を防ぎます。


・マウス操作履歴については、MouceOverメソッド等によりコンテンツをマウスにより実際にクリックしたのか検証し、リクエストに一緒に送信する事で人間による動作を確認するものです。



1点目と2点目では、ハッカーはブラウザ操作に縛られることなくリクエスト処理の偽造によりどうとでも出来てしまう為、3点目のトークンのランダム生成と,4点目の利用者の入力動作に条件を与える事で対策を考えていました。
4点目の条件ではサイト表示端末によっては適応が難しいといった課題が有ります。また、一度検討したマウス操作履歴をデータベースに格納し全く同じものが無いか確認する必要が有る為、管理コストとデータベース検索の時間があまり実用的ではないとゆう課題も有ります。

あと、私はSNSのイイネボタンの仕組みを把握しているわけではないので、そもそもこれら対策の目の付け所自体が間違っているかもしれません、その際は目の付け所が違うと一括いただけたらと思います。

ご教授の程よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ockeghem

2018/08/19 10:57 編集

回答したいと思いつつも、何を回答してよいのかよくわからない状態です。下記の(1)以降について、簡潔に追記してもらえないでしょうか? (0) 背景 (これは書いてあると考えます) (1) 解決すべき課題 (具体的かつ簡潔に) (2) (1)に対して考えたこと、試したこと (3) (2)に対して発生した課題、問題点
guest

回答1

0

ベストアンサー

大幅に追記をいただきましたが、まだ質問内容が茫漠としています。

ウェブインデント機能はブラウザのXFrameOptionsサポートによりCSRF対策が可能です(別ウィンドウで開く等)

こちらですが、X-Frame-Optionsヘッダで対策できるのは、CSRFではなく、クリックジャッキングです。
そして、CSRFにせよ、クリックジャッキングにせよ、標準的な対策があり、それらを使っている限りは、通常はこれら脆弱性(攻撃手法)については気にする必要はありません。

したがって、新たに検討しなければならないのは、以下のケースです。

  • CSRFやクリックジャッキングとは別の攻撃手法の懸念
  • なんらかの理由で標準的な対策が採用できない場合の代替策

イイネボタンで関係がありそうなものとしては、以下のシナリオです。

クリックジャッキングの標準的な対策方法はX-Frame-Optionsヘッダの利用だが、その副作用としてiframeが使えなくなる。一方、いいねボタンの実装にiframeを使いたいので、X-Frame-Optionsヘッダとは別の対策方法が必要になる

上記はあくまで例です。このような検討をするには、いったん実装方法を仮決めして、その実装方法に対する脅威を洗い出す必要があります。このため、下記はとても気になるところです。

あと、私はSNSのイイネボタンの仕組みを把握しているわけではないので、そもそもこれら対策の目の付け所自体が間違っているかもしれません、その際は目の付け所が違うと一括いただけたらと思います。

仕組みがわからないと脅威分析はできません。イイネボタンを実装したいのではないのでしょうか?

考えた対策方法としては以下のようなものになります。

・イイネボタンのCSSレイアウトに問題が無いか検討する
・トークンの埋め込みによるサイト側からのリクエスト確認
・サイト埋め込みトークン名のランダム生成
・リクエストにユーザのマウス操作履歴を格納する

これらは「仕組み」がわからないとなんとも言えないのですが、全般的な印象としては「複雑すぎる」と思います。複雑な仕組みは却って破られやすいのです。たとえば、クリックジャッキング対策としてX-Frame-Optionsヘッダが普及する前は、JavaScriptによる様々なチェック方法が考案されましたが、いずれも破られており、だからこそX-Frame-Optionsヘッダというブラウザ側のサポートが必要になったのです。

ということで、結論としては以下になります。

実装方法の脅威分析をするには、まず実装方法を仮定しなければ何も始まらない

投稿2018/08/19 14:17

ockeghem

総合スコア11701

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiruLow

2018/08/19 14:33

貴重なご意見ありがとうございます。確かにボタンの仕組みを把握しない状態では対策の方法も決めかねます。 初回のみXFrameOptionsでのログイン処理を要求する、ブラウザ側のサポートを取り入れた安全な方向へ切り替え、再度検討したいと思います。 とても勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問