• ベストアンサー

フォームのチェック

mysqlにフォームから送られてきたurlを保存しようと思います そのままだとセキュリティ的にまずいですよね?phpでurlのチェックをする方法はありますか? $hogeにpostされたurlを受け取ってあります varchar(255)のカラムに保存しようと思うのですが255文字超えた文字は登録されないから、文字数制限は必要ないですよね?

質問者が選んだベストアンサー

  • ベストアンサー
  • cheese014
  • ベストアンサー率85% (12/14)
回答No.2

> phpでurlのチェックをする方法 正規表現でチェックする方法もありますが、filter_var() 関数を使うと良いです。 https://www.google.co.jp/search?q=php+filter+url > mysql_real_escape_string() mysql_xxx ではなく mysqli_xxx 系の関数を使った方が良いです。 即ち、mysql_real_escape_string() ではなく mysqli_real_escape_string(); ですね。 ※もちろん、他の mysql_xxx と書いているコードも修正する必要があります。 書籍やサイト上では、未だに mysql_xxx 系の関数が使われている古いコードが散見されますが、参考にしない方が良いです。MySQLなら、mysqli_xxx か PDO を使い、プリペアドステートメントを使っているコードを参考にしましょう。 https://www.google.co.jp/search?q=php+%E3%83%97%E3%83%AA%E3%83%9A%E3%82%A2%E3%83%89%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88 > 文字数制限は必要ないですよね? 最初は面倒かもしれませんが、外部から来るデータは、文字数の長さ,正当性等、丁寧にチェックする「癖」を付けておいた方がいいですよ。

flash0
質問者

お礼

お答え頂きありがとうございます urlチェックできました mysqliに書き換えることにしました 地道にチェックしていきます ありがとうございました(_ _

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>セキュリティ的にまずい プリペアード処理や、エスケープ処理がかかっていれば問題ないです どちらかといえば集計のためurlを分解したい希望は別途でてくるかもしれません >255文字超えた文字は登録されないから、文字数制限は必要ない 意味がよくわからない パラメータが途中できれても問題ないと認識しているならそれでも構いませんが ユーザーは平気で想定外のデータをおくってきますよ

flash0
質問者

お礼

お答え頂きありがとうございます mysql_real_escape_string()で受け取っています 簡単なurlかどうかのチェック方法でいいのでお願いします(_ _ 文字数の設定は自分できました。失礼しました

関連するQ&A