복붙노트

ADOdb의 SQL 주입 및 일반적인 웹 사이트 보안

PHP

ADOdb의 SQL 주입 및 일반적인 웹 사이트 보안

나는 꽤 많이 읽었지만 여전히 SQL 주입이 어떻게 일어나는지 100 % 이해하지 못합니다!

필자는 알고있는 사람들로부터 SQL injection의 구체적인 예를보고 싶습니다. 따라서 복제, 테스트 및 수정이 가능합니다. 나는 SQL 코드를 주입하려고 시도했지만 그렇게 할 수 없었기 때문에 다른 사람이 나를 증명해 주길 바란다!

1.Am 나는 SQL 주입이 POST 또는 GET 메소드에서만 일어날 수 있다고 말합니다. 즉, 웹 사이트에서 POST 양식이어야합니다. '가입 또는 검색'또는 'search.php? tags = love'같은 검색어?

POST 메서드가있는 다음 코드를 삽입하는 것이 가능하다고 말하는가?

$name     = trim($_POST['username']);
$mail     = trim($_POST['email']);
$password = trim($_POST['password ']);

   if ($errors == "false") {
    $sql = 
        "INSERT INTO 
           clients 
         SET 
           name='" . mysql_real_escape_string($name) . "',
           mail='" . mysql_real_escape_string($mail) . "', 
           password='" . mysql_real_escape_string(sha1($password)) . "'";
           $connection->execute($sql);

    }

2. 다른 사람은 GET 방법을 가지고 있습니다 : rate.php? & videoID = 250 & userID = 30

$sql = 
    "SELECT 
        videoID 
     FROM 
        likes 
     WHERE 
        videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1";
        $connection->execute($sql);

주제와 함께 자유롭게 느끼는 사람들을 도와주세요. 그러나 구체적인 예를 사용하십시오.

미리 감사드립니다. 일리아

해결법

  1. ==============================

    1.SQL 주입 공격은 사용자 입력이 부적절하게 인코딩 될 때 발생합니다. 일반적으로 사용자 입력은 사용자가 검색어와 함께 보내는 일부 데이터, 즉 $ _GET, $ _POST, $ _COOKIE, $ _REQUEST 또는 $ _SERVER 배열의 값입니다. 그러나 사용자 입력은 소켓, 원격 웹 사이트, 파일 등과 같은 다양한 소스에서 가져올 수 있습니다. 따라서 사용자 입력으로 'foobar'와 같은 모든 상수를 처리해야합니다.

    SQL 주입 공격은 사용자 입력이 부적절하게 인코딩 될 때 발생합니다. 일반적으로 사용자 입력은 사용자가 검색어와 함께 보내는 일부 데이터, 즉 $ _GET, $ _POST, $ _COOKIE, $ _REQUEST 또는 $ _SERVER 배열의 값입니다. 그러나 사용자 입력은 소켓, 원격 웹 사이트, 파일 등과 같은 다양한 소스에서 가져올 수 있습니다. 따라서 사용자 입력으로 'foobar'와 같은 모든 상수를 처리해야합니다.

    게시 한 코드에서 mysql_real_escape_string은 사용자 입력을 인코딩 (이스케이프)하는 데 사용됩니다. 따라서 코드는 정확합니다. 즉, SQL 주입 공격을 허용하지 않습니다.

    mysql_real_escape_string에 대한 호출을 잊어 버리는 것은 매우 쉽다. 숙련 된 공격자에게는 한 번만 충분하다. 따라서 현대 PDO를 adodb 대신 준비된 문으로 사용하고자 할 수 있습니다.

  2. ==============================

    2.나는 최근에이 주제에 대해 철저히 조사해 왔으며, 다른 사람들과 매우 흥미로운 자료를 공유하고 싶습니다. 따라서 모든 사람들에게 제 질문을 더욱 완전하고 유익하게 만듭니다.

    나는 최근에이 주제에 대해 철저히 조사해 왔으며, 다른 사람들과 매우 흥미로운 자료를 공유하고 싶습니다. 따라서 모든 사람들에게 제 질문을 더욱 완전하고 유익하게 만듭니다.

  3. from https://stackoverflow.com/questions/11939226/sql-injections-in-adodb-and-general-website-security by cc-by-sa and MIT license