3

私は現在、作業中の Web アプリケーションのデータベースに送信されたテキストが、データベースに送信される前に適切にサニタイズされ、取得されて正しく表示されるように取り組んでいます。

現在使用されているサニタイズ機能の寄せ集めを無視して (現在はごちゃごちゃしており、物事を壊しています)、これが私がやろうとしていることです:

  1. テキスト入力には CKEditor を使用します。HTMLタグ/シンボルをHTMLエンティティに自動的に変換します。

  2. PDO 準備済みステートメントを使用して、テキストをデータベースに送信します。

これは入力を適切にサニタイズするのに十分ですか? 私はこれを読んでいて、多くの人が魔法の引用符を使用すると言っていますが、魔法の引用符は古く、使用しないことをお勧めします.

ご協力いただきありがとうございます。

4

2 に答える 2

2

魔法の引用符を使用しないでください。http://php.net/manual/en/security.magicquotes.php

この機能は PHP 5.3.0 で非推奨となり、PHP 5.4.0 で削除されました。

準備済みステートメントを使用している場合は、SQL インジェクションから安全なはずです。htmlspecialchars()フロントエンドに表示するときは、ユーザーが入力したデータを実行することを忘れないでください。

于 2013-02-19T21:02:28.220 に答える
2

まあ、PDO は初心者向けマニュアルの基本的なケースだけで大丈夫です。
どんな複雑な問題でも、PDO だけでなく他の API も問題にします。

しかし、膨大な挿入ステートメントを書いて時間を無駄にする準備ができている限り、ここでのすべての回答に従ってすべての変数を 6 ~ 10 回繰り返します。PDO は問題ありません。

ただし、識別子用の準備済みステートメントはありません。

CKEditor については、クライアント側のアプリケーションではありませんか? もしそうなら、それは何も保護しません。
したがって、別の回答からのアドバイスに従うことをお勧めします-HTMLページに表示するときに、信頼されていないユーザー入力を htmlspecialchars() を介して渡します

于 2013-02-19T21:10:44.837 に答える