dポイントプレゼントキャンペーン実施中!

フォームでのデータの受け渡しで質問があります。

リンクにデータを埋め込んで、GETで次ページにデータを渡すという方法があると思うのですが、本を読んだりしたところ、クロスサイトスクリプティングやSQLインジェクションの攻撃にあう可能性も指摘してあったので、何となく今まではデータの書き込みを行うファイルへのフォームデータの受け渡しは、POSTを使ってやっています。

しかしながら、POSTを使うとコードが複雑になるような気もします。GETを使うのはあまり薦められないことなのでしょうか?それとも、これらの攻撃を決定的に回避できる方法があるものなのでしょうか?

アバウトな質問ですが、よろしくお願いします。

A 回答 (4件)

他の方のおっしゃる通り、POSTも攻撃されます。


以下のことに注意してください。

注意点:ユーザー入力値をそのまま使っていないか?
echo等の出力SQL文へ直接挿入等

解決策:ユーザー入力値は必ずサニタイズして下さい。
PHPの関数なら、HTMLspecialchars(),escapeshellarg()等

注意点:入力のチェックを行っているか?
サニタイズだけでなく、例えば価格がPOSTされる場合は、数値のみです。SQLインジェクションに使われるこれらの文字は不要ですよね。" ' , &| % ? * 他

解決策:正規表現等を使い、本来入力されるべき値をチェックして下さい。

参考URL:http://www.atmarkit.co.jp/fsecurity/rensai/webho …
    • good
    • 0

>GETを使うのはあまり薦められないことなのでしょうか?


GETだろうがPOSTだろうが攻撃されることに変わりはありません。
GETの場合、URLにパラメータが出てきてしまうので、一般人でもURLのパラメータをいじるだけで比較的簡単な攻撃が出来てしまうということです。
例えば日付をパラメータにしている場合、コンピュータが処理出来ない日付や存在しない日付にしたりできますよね?GETではこのようなことがURLをいじるだけで出来てしまうと言うことです。
だからといってPOSTが安全と言うわけではなく、POSTのパラメータも知識があれば簡単に変更できてしまいます。
本当に攻撃しようとしている連中が注目する点は、送られたデータが生のまま、または簡単なチェックで処理されているのか?それともちゃんとしたチェックや変換をしているかどうかです。

なので攻撃に対する対策としては、ユーザが送ると考えられる様々データを想定することが第一歩です。
    • good
    • 0

要はどんな攻撃を受ける可能性があるから、こういう対処をしているというのを自分で分かっていればいいのです。



例えば、< を &lt; とするとか。

参考URL:http://www.ipa.go.jp/security/awareness/vendor/p …
    • good
    • 0

受け取った値をちゃんと処理すれば何も恐れることはありませんよ。


検索系のものはURLをそのまま保存できたりして便利だし、ブラウザの戻るで有効期限切れとか言われることも無いですし、使うべきところではGET使った方がいいと思いますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!