• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysqlにデータ登録)

データ登録についての考え方

このQ&Aのポイント
  • phpでフォームに入力された値をDBに登録するとき、エスケープしたデータをDBに入れるのはまずいですか?
  • 表示用とは別に生のデータを取得してDBに入れる方法があるが、どちらがいいのか?
  • htmlの要素の登録が必要な場合、エスケープしたデータは表示する際に手間がかかるが、どうするべきか?

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

  • ベストアンサー
  • JV44
  • ベストアンサー率50% (24/48)
回答No.1

データ入力時に、そのデータを出力する際に問題となりそうな文字列を対策することを一般的に「サニタイズ」と呼びます。 しかし、現在では入力時に対策するのではなく、出力時に必要な対策を行う方が安全性が高いとされています。 データ入力時のSQLインジェクション対策はサニタイズではないかと思われるかもしれませんが、DBへのデータ登録とは即ち「PHPからDBへのSQLの出力処理」なのでサイニタイズとは呼びません。 ・情報処理推進機構:情報セキュリティ:脆弱性対策:安全なウェブサイトの作り方 http://www.ipa.go.jp/security/vuln/websecurity.html ・続・「サニタイズ言うなキャンペーン」とは http://takagi-hiromitsu.jp/diary/20060115.html この辺りの話は「サニタイズ言うなキャンペーン」で検索してみてください。 また、DBのデータの汎用性(例えば内容を印刷するとか)を考えるとできる限り元のデータのまま管理して、出力目的毎に対策するほうが使いやすいかと思います。

dcx147
質問者

お礼

お返事ありがとうございます。 表示するには当然サニタイズの必要があるがDBに登録するにはプリペアドステートメントを 利用しクオート処理だけ行い表示する用途に合わせhtmlspecialcharsやstrip_tagsを 利用しサニタイズを行うということですね! 非常にわかりやすいお答えを頂きありがとうございました!