Flash側からPHPにPOSTで渡す処理で

その中にSQLを混ぜるのは、やはりセキュリティ的観点から
NGでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/12/07 14:53:49
  • 終了:2009/12/14 14:55:02

回答(4件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402009/12/07 15:21:09

ポイント23pt

もう少し具体的でないと適切な回答はしかねるが、

その中にSQLを混ぜるのは、やはりセキュリティ的観点からNGでしょうか?

少なくとも POST された SQL 文を「そのまま実行する」のはNG。

パケットキャプチャはもちろんブラウザのアドオンだけでも通信の中身を見るのは容易いからね。

好きな SQL を実行してくださいと言っているような物。


また PHP 側で検証するとしても SQL 文全体を送信するように

なっているのであればテーブルやカラムと言ったデータ構造をわざわざさらして事になる。

悪意を持った第3者からすれば直接的ではない物の、SQL Injection 等をする難易度は劇的に下がる。


例外的に有りなのは phpMyAdmin 等に代表されるようなDB管理ツールの類を作成する場合。

これらは SQL を実行することも機能の一つだから。

人力検索はてな

id:sirotugu40 No.2

sirotugu40回答回数449ベストアンサー獲得回数142009/12/07 20:59:45

ポイント23pt

>その中にSQLを混ぜるのは、やはりセキュリティ的観点からNGでしょうか?

盗聴されてハックされないSQLならOK。

http://q.hatena.ne.jp/answer

id:goog20090901 No.3

goog20090901回答回数637ベストアンサー獲得回数172009/12/07 21:19:54

ポイント22pt

どうでも良いようなデータを取得してるのなら

問題ないですね。

http://q.hatena.ne.jp/answer

id:azumi1975 No.4

azumi1975回答回数337ベストアンサー獲得回数162009/12/07 21:22:49

ポイント22pt

SSL通信してるのなら、問題ないです。

http://q.hatena.ne.jp/answer

  • id:pochi-p
    なにこれひどい。b-windさん以外出鱈目ばっかり。
    id:sirotugu40 id:goog20090901 id:azumi1975 ←の3人がWEBアプリ開発してたらマジ泣ける。
    コメントしとくから id:makocan さんは確認してくださいね。


    > 「SSL」「盗聴されてハックされないSQL」
    SQLがパケットを通じて『見られないだけ』で、『入れれない』訳ではありません。
    クラッカーもSSL経由で好き勝手なSQLを送りつけるだけです。
    そしてパケット傍受で見れないだけで、Flashの解析等されればSQLは筒抜けです。


    > 「どうでも良いようなデータを取得」
    「FlashからPHPに渡されるSQL」がどうでも良いデータのSELECTであっても、他の経路からPHPに「それ以外のSQL」を送られてしまいます。
    Flashから渡すSQLの内容に関わらず、「PHP側にSQLをそのまま実行する入り口」があるのが問題なのです。
    DBMSの種類、PHPからのコネクション設定(に与えられた権限)等にもよりますが、更新・削除・他のデータ閲覧等何でもやり放題だと考えましょう。
    「FlashからSELECT * FROM hogeしてるだけだし安心、と思ったらDELETE FROM nekoされてる!! nekoがー!!」となってしまいます。
    場合によってはシステムのシェルコマンドまで実行される事もあります。(DBサーバーで「FORMAT C:」的な事をされるとでもイメージしてください)


    結論:超NG。
    もし業務システムの話だったら絶対止めましょう。IPAに通報されるレベルです。
    クライアント側の種類(Flash、WWWブラウザ(HTML)、その他)に関係なく、『PHP側に渡されたSQLを実行するページ有り』という事が大問題です。
    id:b-wind さんの言う通り『phpMyAdmin』のようなもの特殊用途以外では使うべきではありません。


    まあ一応、受け取るパラメータを
    /hoge.php?sql=SELECT+*+FROM+hoge
    の様な形にせず、
    /hoge.php?sql_no=1
    と置き換え、
    「sql_noに1が渡されたから"SELECT * FROM hoge"を実行、2が渡ったら…」
    とPHPで処理する場合などは問題ありません。
    ただしこの場合もsql_noをユーザー(クラッカー含む)が好き勝手指定出来ると認識はして下さい。


    また検索条件等をFlashから
    /hoge.php?hugahuga=hatena
    と渡しPHPでDBに
    SELECT * FROM hoge WHERE hugahuga='hatena'
    といったSQLをDBに渡す時は、必ずSQLインジェクション対策をしましょう。
    IPAに通報されます。


    ていうかIPAの資料読んで下さい……。
    http://www.ipa.go.jp/security/awareness/vendor/programming/

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません