ホームページ  >  記事  >  バックエンド開発  >  PHP は SQL インジェクション関数を妨げます (discuz)

PHP は SQL インジェクション関数を妨げます (discuz)

WBOY
WBOYオリジナル
2016-07-25 08:53:161032ブラウズ
  1. $magic_quotes_gpc = get_magic_quotes_gpc();

  2. @extract(daddslashes($_POST)); ;
  3. if(!$magic_quotes_gpc) {
  4. $_FILES = ダッズラッシュ($_FILES);
  5. }

  6. 関数 ダッズラッシュ($string, $force = 0) {

  7. if(!$GLOBALS[' magic_quotes_gpc'] || $force) {
  8. if(is_array($string)) {
  9. foreach($string as $key => $val) {
  10. $string[$key] = godslashes($val, $force) ;
  11. }
  12. } else {
  13. $string =addlashes($string);
  14. }
  15. }
  16. return $string;

  17. 以下のコードを拡張して保護できますサーバーのセキュリティにとって、PHP が SQL インジェクションのセキュリティ機能を防ぐことは非常に重要です。

/*

関数名: inject_check()

関数関数: 送信された値に SQL インジェクション文字が含まれているかどうかを検出し、インジェクションを防止し、サーバーのセキュリティを保護します
パラメーター: $sql_str: 送信された変数 bbs .it-home.org
戻り値: 検出結果、true または false を返します
    */
  1. function inject_check($sql_str) {
  2. return eregi('select|insert|and|or|update|delete|'|/ *| *|../|./|union|into|load_file|outfile', $sql_str); // フィルター
  3. }

  4. /*

  5. 関数名: verify_id()
  6. 関数: Verify送信されたID値が正当かどうか
  7. パラメータ: $id: 送信されたID値
  8. 戻り値: 処理されたIDを返す
  9. */
  10. function verify_id($id=null) {
  11. if (!$id ) { exit('パラメータなしsubmit!'); } // 空かどうかの判定
  12. elseif (inject_check($id)) { exit('提出されたパラメータが不正です!') } // インジェクションの判定
  13. elseif (!is_numeric ($id); )) { exit('送信されたパラメータは不正です!'); } // 数値判定
  14. $id = intval($id); // 整数化

    return $id
  15. }< /p>
  16. /*

  17. 関数名: str_check()
  18. 関数関数: 送信された文字列をフィルタリングする
  19. パラメータ: $var: 処理する文字列
  20. 戻り値: フィルタに戻る
  21. */
  22. の後の文字列function str_check( $str ) {
  23. if (!get_magic_quotes_gpc()) { // magic_quotes_gpc がオンになっているかどうかを判断します
  24. $str = addedlashes($str); // フィルター
  25. }
  26. $str = str_replace("_", " _", $str); // '_' を除外します
  27. $str = str_replace("%", "%", $str); // '%' を除外します< /p>
  28. return $str;

  29. }

  30. /*

  31. 関数名: post_check()
  32. 関数関数: 投稿された編集内容を処理する
  33. パラメータ: $post: 投稿するコンテンツ
  34. 戻り値: $post:フィルターされたコンテンツを返します
  35. */
  36. function post_check($post) {
  37. if (!get_magic_quotes_gpc()) { // magic_quotes_gpc が開いているかどうかを判断します
  38. $post = addlashes($ post) // magic_quotes_gpc が開いていない場合に送信されたデータをフィルターします。オンにしました
  39. }
  40. $post = str_replace("_", "_", $post); // '_' を除外します
  41. $post = str_replace( "%", "%", $post); out '%'
  42. $post = nl2br($post); // 変換を入力
  43. $post = htmlspecialchars($post); // HTML タグの変換
  44. ; これを共通の呼び出しファイル (conn データベース リンク ファイルなど) に配置し、すべての GET または POST データを特別な文字列でフィルタリングして、シンプルで効果的な SQL インジェクション フィルタリングを実現します。 コード:
  45. Function inject_check($sql_str) {
  46. return eregi('select|insert|and|or|update|delete|'|/*|*|../|./|union |into|load_file|outfile', $sql_str);
  47. }
  48. if (inject_check($_SERVER['QUERY_STRING'])==1 または inject_check(file_get_contents("php://input"))==1){
  49. //echo "不正アクセス警告!";
header("Location: Error.php");
}
コードをコピー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。