2

そこで私は、ある時点でユーザーが ckeditor に HTML を入力できる小さなシステムを開発してきました。その HTML はデータベースに保存されます (microCMS のようなものです)。

問題は、Mysqli を使用する場合、" と ' の前後にエスケープ文字を挿入して論理的にインジェクションを停止し、HTML コードのロードを中断することです。

例えば

またはそれに近いものになり、コードが壊れます

インジェクション防止を無効にする方法、または別の方法でデータベースに入力する方法はありますか? または、データベースから取得されているときに /" を置き換えますか?

ありがとう

-jman6495

編集: PHP の str_replace 関数を使用して /" を " に置き換えた問題を解決しました。

コードは次のとおりです。 $pagecontent = str_replace('\"','"',$pagecontent); $pagecontent をエコーし​​ます。

とにかくありがとう

-jman6495

4

1 に答える 1

1

データをフェッチして戻すときにこれらの文字が表示される場合は、何らかの形でコンテンツをダブルエスケープしています。一度だけエスケープしていることを確認し、プレースホルダーではなくmysql_real_escape_string. あなたは問題を解決していません。深刻なバグのダメージを元に戻しました。

SQL エスケープの目的は、データを正しく確実に挿入することです。たとえば、MySQL 用でO'Reillyある必要があります。O''Reillyデータベース内の実際のコンテンツは、引用に関係なくある必要があります。O'Reilly

于 2012-08-10T23:06:16.753 に答える