4 に答える
データベースを自分で挿入するために、データをサナタイズしようとすることを心配する必要はありません(つまり、アポストロフィを削除しようとしている時点では...)。これは解決された問題です。
最善の解決策は、PDOデータベースコネクタを使用して、準備されたクエリでデータを挿入することです。
挿入のために検証/サナタイズを行う必要はまったくありません。データベースは、許可するとすべてのデータを正しく保存します。
mysql_*
まだ関数を使用している場合は、使用しないでください。それらは非常に古く、間もなく非推奨になり、細心の注意を払って使用しないと、アプリケーションで多くのプログラミングミスや悪用が発生する可能性があります。
これは、 PDOの使用方法に関する適切なチュートリアルです。プリペアドステートメントで正しく使用すれば、サナタイズについて心配する必要がないことを忘れないでください。どんな種類のアポストロフィについても心配する必要はありません!PDOコネクタがそれを行います!
適切なタイポグラフィに対するあなたの危険な復讐に同意しませんが、str_replace()
存在するさまざまな種類のアポストロフィ風の文字のそれぞれにが必要になると言えます。str_replace()
削除したいアポストロフィの種類ごとに、たくさんのsを実行するだけです。
私はまだあなたがそれを解決するのではなくそれを避けることによって問題を解決しようとしていると思います。アポストロフィはmysqlデータベースに入れるのに完全に問題ありません。別の文字セットまたは照合が必要な場合があります。
何のために消毒しているのですか?
データベースへの提出? real_escape_string()
getリクエストのURLに返しますか? htmlspecialchars()
あなたがそれを消毒している特定の理由は、私たちがそれを行うための最良の方法を見つけるのに役立ちます!
XSS攻撃を防止しようとしている場合は、filter_varを試してください。
$essay=filter_var($essay, FILTER_SANITIZE_STRING);
SQLインジェクションから保護しようとしている場合は、パラメーター化されたクエリを検索してください。