1

フォームから mysql テーブルに移動するコードをサニタイズしている場合、これでうまくいきますか? 入力する必要がある/入力されるデータは、学校の科目と教授の姓/名です...これを行う方法に関する他の提案はありますか?

/*
Sanitize() function removes any potential threat from the
data submitted. Prevents email injections or any other hacker attempts.
if $remove_nl is true, newline chracters are removed from the input.
*/
function Sanitize($str,$remove_nl=true)
{
    $str = $this->StripSlashes($str);

    if($remove_nl)
    {
        $injections = array('/(\n+)/i',
            '/(\r+)/i',
            '/(\t+)/i',
            '/(%0A+)/i',
            '/(%0D+)/i',
            '/(%08+)/i',
            '/(%09+)/i'
            );
        $str = preg_replace($injections,'',$str);
    }

    return $str;
}    
function StripSlashes($str)
{
    if(get_magic_quotes_gpc())
    {
        $str = stripslashes($str);
    }
    return $str;
}   
4

5 に答える 5

1

PHP のPDO クラスをお勧めします。あなたは次のようなことをします:

try
{
  $sql ='INSERT INTO whatever(a,b,c) VALUES(:a,:b:c);
  //or if you prefer...
  $sql ='INSERT INTO whatever(a,b,c) VALUES(?,?,?);
  $stmt = db::db()->prepare($sql);
  $stmt->execute(array(123,234,345));
}
catch(PDOException $e){library::sql_error($e,$sql);}
于 2012-05-23T03:13:19.337 に答える
1

時間を割いて助けてくれたみんなに感謝します。文字を人々に使用してもらいたいものだけに制限する preg_replace 関数を使用しpreg_replace("~" . "[^a-zA-Z0-9\-\_\.\ ]" . "~iU", "", $string)ました。私も使用mysql_real_escape_stringしたので、データベースに送信する前に2つのレベルのフィルタリングを行っています。

于 2012-05-24T02:57:25.190 に答える
0

mysql_real_escape_string()問題を引き起こす可能性のあるすべての潜在的な文字をエスケープする whichを使用しないのはなぜですか? 組み込まれているだけでなく、MySQL 独自のものを調整mysql_real_escape_stringするので、インストールしたデータベースで何をエスケープする必要があるかを常に最新の状態に保つことができます。

于 2012-05-23T03:00:55.170 に答える
0

最良のオプションは、PDO の bindValue メソッドを使用することです。

http://www.php.net/manual/en/pdostatement.bindvalue.php

これにより、すべてのエスケープが整理されます。

フォームについては、これも確認できます。

http://semlabs.co.uk/docs/xfl/xfl-elements/sanitise

これはフォームをより簡単に処理するための PHP クラスのセットですが、理解するには少し時間がかかります。

于 2012-05-23T03:17:20.200 に答える
0

これを試して :

 function sanatize($value) {

            $value = preg_replace("~" . "[^a-zA-Z0-9\-\_\.]" . "~iU", "", $value);
            return $value;
    }
于 2012-05-23T04:14:24.497 に答える