2012-02-13 11 views
1

PHPのPEARフレームワークを使用してアプリケーションを開発していましたが、二重エスケープ/引用入力の問題が発生し、改行(\ n)が正しく表示されませんでした。フォーラムを検索するには答えがたくさん出てきましたが、PEARのescape()やquote()関数を使ってSQLインジェクションセキュリティを使うのに十分なアドバイスがあるのか​​、mysql_real_escape_string()を使うべきなのか疑問に思っていましたか?私は()+はhtmlspecialchars()は、その後、コンテンツを吐き出すと、もともと間違って入力をエスケープするために、以下を使用するためにnl2brを使用しようとしている:PHP PEARのエスケープ()対見積もり()対mysql_real_escape_string()?

$db->quote(mysql_real_escape_string(trim($_POST['text'])));

+0

あなたが使用しているパッケージについて言及していません - 私はMDB2_MySQLを想定していますか? – kguest

答えて

4

をお使いのデータベースドライバのエスケープ関数を使用します。 PEARパッケージを使用してデータベースに接続している場合は、そのエスケープ機能を使用してください。生のmysql関数を使用している場合は、mysql_real_escape_stringを使用してください。 2つ以上を使用しないでください(あなたが考え出したように)。

さらに、時間と一緒に近代的な準備文を使用してください(たとえば、PHP's PDO class)。

+0

+1は "prepared statementを使う"です。いずれにしても、これは唯一の「明確に定義された」オプションです(たとえばMSSQLなど)。 –

+0

ああ、ありがとう、何らかの理由で本当にそれに導入されたことはありません。それをチェックします! – carlinyuen

関連する問題