2012-02-18 6 views
3

PHPで基本的なWebサイトやアプリケーションを書いたことがありますが、MySQLデータベースのデータがどのように格納されているのかを除いて、列名と同じです(通常a_column_nameのように)。どのように変数がphpで "unsanitized"であることを意味しますか?

「汚れた」と「きれいな」変数を区別することが本当に重要なことを知っているので、誤ってSQLインジェクションやXSSを実行することはできませんが、どのような命名規則つかいます。

アドバイスはありますか?

答えて

5

これは正しいアプローチではないと思います。

変数は、たとえばsql、urls、htmlなど、さまざまな方法でエンコードできます。可能な限り消費量に近づけてエンコードする必要があります。つまり、出力前にhtmlエンコードしてから、mysqlに渡す前にSQLエスケープしてください。

もちろん、sqlの場合は、文字列クエリを作成するよりも、


あなたが命名規則を主張するのであれば、あなたはサニタイズしていないあなたがその変数の内容に適用されるものをエスケープ/エンコードでそれをベースに、とはなりません。

2

値をエスケープするだけで覚えておく必要があります。

例えば、文字列を格納するのにmysqlを使用している場合。

使用mysql_real_escape_string()

<?php 
// Connect 
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') 
    OR die(mysql_error()); 

// Query 
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'", 
      mysql_real_escape_string($user), 
      mysql_real_escape_string($password)); 
?> 

そして、あなたはページ

使用中のいくつかの値を印刷する必要があります。htmlspecialchars

<?php 
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); 
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt; 
?> 
関連する問題