2011-07-03 21 views
1

私は創造的なポートフォリオを管理するためのMVCアプリケーションを構築しています(git hubに入れる予定です)。私はDB接続を保護するために何かが必要ですが、基本的に私はすべてのDBトランザクションを管理するクラスを持っています。SQL/XXS攻撃から保護するクラス?

クラスを作成するか、XXSまたはSQL攻撃からすべてのSQLクエリを保護できるクラスを見つける必要があります。 PHPデータベースへの接続を確保するための提案はありますか?

+0

タイトルにタグを書き留めてください。 –

+0

PDOとstriptagsまたはhtmlpurifier –

+0

@Tomalak、あなたはそれが好きではないという意味ですか? –

答えて

-1

だけでは、機能、アクセスデータベースを作るにPDOのプリペアドステートメントを使用して、

$input = array_map('protect','$_POST'); 
$input = array_map('protect','$_GET'); 
+0

@Snow_Mac上記のメソッドは安全ではありませんし、まったく必要のないものもあります。まず、addslashes()関数はSQLインジェクションを防ぎません。 mysql_real_escape_string()などのデータベースタイプに固有のものを使用する必要があります。 htmlentities()はhtmlエンティティ'(これは 'ブラウザとして表示されます)に変わりますが、すべての文字列を取り除いた後、文字列のうち、htmlエンティティはブラウザの&#039のように見えます。なぜなら、htmlエンティティではないからです。 – dqhendricks

+0

@Snow_MacとHTMLエンティティはすでに '、<, and >をHTMLエンティティに変換しているので、あなたはすでにそれらを取り除いた後にあなたの文字列からそれらを削除するには?この衛生機能はまったく意味がありません。サイドノートに – dqhendricks

3

をarray_mapを使用して全体の入力のためにそれを簡単に適用することができ、この機能でGETリクエスト

function protect($string) 
{ 
     if (ini_get('magic_quotes_gpc') == 'off') // check if magic_quotes_gpc is on and if not add slashes 
      { 
      $string = addslashes($string); 
      } 
// move html tages from inputs 
$string = htmlentities($string, ENT_QUOTES); 
//removing most known vulnerable words 
$codes = array("script","java","applet","iframe","meta","object","html", "<", ">", ";", "'","%"); 
$string = str_replace($codes,"",$string); 
//return clean string 
return $string; 
} 

あなたにPOSTをフィルタリングしてみてください注射に耐性のあるクエリー。 http://us2.php.net/manual/en/pdo.prepare.php

htmlspecialchars()を使用すると、出力がxxsから免除されます。 http://us2.php.net/manual/en/function.htmlspecialchars.php

+0

がある場合、PDOはまた、異なるrdbmsを使いやすくします。 – dqhendricks

関連する問題