2011-01-05 15 views
2

こんにちは私はPHPとMySQLでしばらく働いています。今私はPHP-InformixとPHP-Oracle環境で作業しています。私はいつもデータベースに入るデータのためにmysql_real_escape_stringを使いました。私は現在、InformixとOracleデータベース・サーバを扱っていますが、OCI8やODBCなどのドライバを介して接続するデータベースのエスケープ・ファンクションは認識していません。Oracleデータベースへの入力に対するSQLインジェクションに対するサニタイズ

誰でもこれらのデータベースのセキュリティ対策について少し説明することができます。

+0

だから、あなたはいつも間違っていました:)文字列だけをエスケープする必要があります。数字のために何も役立たない –

+0

あなたは邪悪ないくつかのSQLインジェクションがいかに驚異的なのだろうか? –

答えて

6

非常に動的なクエリを実行していない限り、サニタイズを実行しないでください。パラメータ化されたクエリは、の右の方法です。これを行う方法については、 Here's the PHP Documentationを参照してください。

+1

+1パラメタ化クエリです。 – Jeremy

+0

私はあなたがそれをする必要がある「非常にダイナミックな」状況を考えることさえできません。ユーザーがSQLコードの任意の部分を入力できるようにする場合は、信頼できるユーザーである必要があります。 – JOTN

2

はい、Oracleには、SQLインジェクションを自動的に防止するバインド変数があります。ねえ、ねえ? :) Adam HawkesはPDOライブラリを使用しています。私は個人的にoci_bind_by_name機能を持つoci8を使用しています。

+0

実際には、私は*すべての* PHPを知らない!私はPDOライブラリを使っている他の人も知っています。これはOCI固有のものではないので、一度使い慣れたDBで使用すると、すべてを再学習することなく別のDBに切り替えることができます。私はoci_bind_by_nameについても良いことを聞いています。 –

+0

私はあなたのバインド変数が単一の '('が含まれている場合、クエリが失敗すると思います。 –

関連する問題