0

すべての MySQL クエリで準備済みステートメントを使用するmysql_real_escape_string()場合、SQL インジェクションを防ぐために etc を使用する必要がありますか?

問題: コードをforeachすべての$_POST要素とmysql_real_escape_string()それぞれの要素で実行しました。

textareasしかし、データベースに挿入されるHTMLコードを生成するため、CKEditorを使い始めたときに問題になりましたが、挿入される前にforeach、前述のループを通過し、CKEditorによって生成されたすべての引用符をエスケープして、非HTML ページに表示されると機能します。

それで、おそらく準備されたステートメントが行く方法ですか?

4

1 に答える 1

2

プリペアドステートメントを正しく使用すれば、コンテンツをSQLコードから分離しているため、挿入しているコンテンツをエスケープする必要はありません。

しかし、それは魔法の方法ではなく、単に「準備された方法を使用する」だけです。コードが実際にパラメータに含まれていることを確認する必要があります。(私はあなたがこれをしていると言っているわけではありませんが、確かに)他の方法で実行するクエリを準備するだけで、以前と同じ問題を抱えることができます。

プリペアドステートメントが魔法の「今は安全」ボタンではないことを覚えている場合は、エスケープコードをスキップしても問題ありません。

于 2012-08-30T08:48:51.320 に答える