2012-04-11 19 views
2

私は、私はそれぞれを開くためのアイデアを持っていたこの半自動的

2- $foo = mysql_real_escape_string($_POST['foo']); 
3- mysql_query("update ... $foo ..."); 

にそれを変換したい

1- mysql_query("update ... $_POST['foo'] ..."); 

のようなものを持っているたくさんのファイルを持つ保護されていないPHPのMySQLのスクリプトにセキュリティを追加ファイルを選択し、テキスト$_POST['foo'](フォーム1-)を選択し、キーの組み合わせを押し、次にいくつかのツールを自動的に入力します。

  • 私のクリップボウルに入れます(2 - に追加するための)D mysql_real_escape_string($_POST['foo']);
  • は、3-

のテキストでの1-内のテキストを置き換えるその後、手動アイム2 -

を生成する$foo =とCtrl + Vを押しを書きますメモ帳++と指先と呼ばれるプラグインで試して、マクロを作ろうとしましたが、成功しませんでした。

提案がありますか?

+1

この質問のようなサウンドは、テキストエディタやマクロに関係しています。 –

+0

私はどんな解決策を使っても構いませんが、テキストエディタやマクロを使用することをお勧めします(メモ帳++、ウィンドウだけでなくLinuxも) – jperelli

答えて

3
$_POST = sanitize($_POST); 
$_GET = sanitize($_GET); 

    function sanitize($input) { 
     if (is_array($input)) { 
      foreach($input as $var=>$val) { 
       $output[$var] = sanitize($val); 
      } 
     } else { 
      if (get_magic_quotes_gpc()) { 
       $input = stripslashes($input); 
      } 
      $output = mysql_real_escape_string($input); 
     } 
     return $output; 
    } 

それは完璧ではないですが、あなたは安全でないページがたくさんあるし、それらのすべてを安全にするために簡単な修正が必要な場合は、MySQLに接続した後にこれを置くことができます。また、クエリに引用符で囲まれていない数値変数がある場合は、数値であることを検証するか、クエリで使用する前に型をキャストする必要があります。 mysql_real_escape_string()は引用された値(blah_column = 'value'、ただしblah_column = valueではなく)でのみ機能します。

+0

ニース。内部のvarsが文字列ではなくintの場合のみ問題です。私はそれがいくつかのキャスト+例外メカニズムを使用することができると思います。私はそれに応じて試してみます – jperelli

2

手で1つずつ交換します。あなたがセキュリティを気にしているなら、autoreplaceを作ってはいけません。また、少なくともmysql_real_escape_string(()の代わりに機能を作って使ってください。

//just for example, better can be written 
function db_escape($var, $type = 'string') 
{ 
    if($type == 'string') return mysql_real_escape_string($var); 
    if($type == 'integer') return (int) $var; 
    if($type == 'float') return (float) $var; 
} 
+0

なぜ私はその機能が必要でしょうか?メンテナンス性を向上させるつもりですか? – jperelli

+0

@jperelliその単なる例です。あなたはより良いものを書くことができます。 – safarov