• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptと連携したフォーム送信)

javascriptと連携したフォーム送信

このQ&Aのポイント
  • フォーム送信(メールフォーム)に関する質問です。フォームの入力チェックをJavascirptのバリデータライブラリで行い送信だけPHPを使用するというタイプのメールフォーム作成を考えています。
  • 必須入力、正規表現によるチェックなどをJavascript側で行い、PHPではPOSTされた値を受け取って変換し、メール関数に渡す方法を検討しています。
  • また、Javascriptの無効状態による送信については、hiddenかクッキーを使用して有効無効を判断し、無効状態での送信をエラーとする方法を考えています。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

JavaScriptでチェックするというのは、POST前に不備がわかるので間違ったときの余計な待ちがないというインタフェイスの問題だけですね。ANo.2さんが書かれたように、phpでも同じチェックをするのが基本です。 >保存されたらどんなプログラムもハックできてしまうのでは? それを考えて「POSTされるデータはアテにしない」のが普通です。どんなおかしなデータがPOSTされるかわからないという前提でチェックします。 >たしかにjavascriptのコード送ってもメールじゃ動かないですが >HTMLメールになったりするのでは、と思ってしまいます htmlメールがどういう仕組みになっているか、一度「生のメールデータ」を読んでみることをお勧めします。mb_send_mailでhtmlメールが送れない理由がわかると思います。

tenderfeel
質問者

お礼

お礼が遅れました。 javascriptのバリデータはおまけとして、PHP側で色々チェックをするように作ることにしました。 アドバイスありがとうございました。

tenderfeel
質問者

補足

確かにそうです<インタフェイスの問題だけ 利便性優先でセキュリティゆるゆるって例を晒しましたね…。 以後気をつけたいと思います。 >htmlメールがどういう仕組みになっているか~ アドバイスありがとうございます。確認してみます。

その他の回答 (2)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

なんだかんだ工夫してJavaScriptでvalidateしても、結局はPHP側でも同じvalidateかけないと駄目ですよ 表示されたサイトのHTMLとJavaScriptを保存して、解読して強制的にPHPに悪意ある値をPOSTするように改変すれば、簡単にハッキングされてしまう可能性はありますよ。 メールを送信するのであれば、簡単にメールヘッダーインジェクションされてしまいます しかも htmlspecialchars を使ってなにをするんでしょう? HTMLのタグや特殊文字を排除したところでメールにはなんにも関係ないですよ HTMLで悪意あるコードの排除するためのものであって、メールに関してはなんにもしてくれません。 hiddenだろうとcookieだろうと、結局は閲覧している人のパソコン内でどうとでも改変できますし、だますような値を送りつけることも可能です

tenderfeel
質問者

お礼

htmlspecialcharsは確認画面表示するので結局つけることにしました。 でもデコードでver4系だとエラーが出てしまうのですね…難しいです。 アドバイスありがとうございました。

tenderfeel
質問者

補足

>結局はPHP側でも同じvalidateかけないと駄目 やはり甘かったようですね。質問してよかったです。 ローカル保存は頭に無かったのですが、保存されたらどんなプログラムもハックできてしまうのでは? そこでセッションなんでしょうか… 安全性に何が有効なのかがいまいち理解出来ません…。 htmlspecialcharsは参考に見たメール送信プログラムによく付けられてたからなのですが メール送信ではなくてもいいのでしょうか? たしかにjavascriptのコード送ってもメールじゃ動かないですが HTMLメールになったりするのでは、と思ってしまいます

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

#JavaScriptが無効になっている環境は切捨てということですか? 甘いというか「hiddenで渡した値でチェック」などはローカル保存されたhtmlからでもPOSTを許可することになるのでは?もちろんこの意味ではCookieでもじゅうぶんではないです。 チェックが必要なものであれば「JavaScriptでだけチェック」ということはあり得ません。phpスクリプトでも同様のチェックを必ず行います。ほとんどのケースでは無駄なチェックですが、この無駄を省いてはいけません。

tenderfeel
質問者

補足

あ、言われてみれば確かにそうですね…<ローカル保存 PHPでこれは絶対入れた方がいいというチェックはありますか?

関連するQ&A

専門家に質問してみよう