これを共通の呼び出しファイル (conn データベース リンク ファイルなど) に配置し、すべての GET または POST データを特別な文字列でフィルタリングして、シンプルで効果的な SQL インジェクション フィルタリングを実現します。 PHP 初心者の方、批判やアドバイスを歓迎します。ありがとうございます。
【コード】シンプルな関数プラス判定
Function inject_check($sql_str) { return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str); } if (inject_check($_SERVER['QUERY_STRING'])==1 or inject_check(file_get_contents("php://input"))==1){ //echo "警告 非法访问!"; header("Location: Error.php"); }
2.【コード】(2013年12月23日更新)皆さんの提案を組み合わせてこんな感じに変更しました。皆様、いつも批判やアドバイスをありがとうございます! (大文字と小文字は区別されません)
Function inject_check($sql_str) { return preg_match('/select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/i', $sql_str); } if (inject_check($_SERVER['QUERY_STRING'])==1 or inject_check(file_get_contents("php://input"))==1){ //echo "警告 非法访问!"; header("Location: Error.php"); exit; }