ADOdb의 SQL 주입 및 일반적인 웹 사이트 보안
PHPADOdb의 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.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.나는 최근에이 주제에 대해 철저히 조사해 왔으며, 다른 사람들과 매우 흥미로운 자료를 공유하고 싶습니다. 따라서 모든 사람들에게 제 질문을 더욱 완전하고 유익하게 만듭니다.
나는 최근에이 주제에 대해 철저히 조사해 왔으며, 다른 사람들과 매우 흥미로운 자료를 공유하고 싶습니다. 따라서 모든 사람들에게 제 질문을 더욱 완전하고 유익하게 만듭니다.
from https://stackoverflow.com/questions/11939226/sql-injections-in-adodb-and-general-website-security by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
로그인 스크립트에 password_verify를 넣을 위치는 어디입니까? (0) | 2018.09.18 |
---|---|
멀티 바이트 문자열을 n 개의 문자로 잘림 (0) | 2018.09.18 |
PHP 연관 배열 중복 키 (0) | 2018.09.18 |
PHP는 mysqli 준비 성명 (0) | 2018.09.18 |
사용되지 않는 preg_replace / e를 preg_replace_callback [duplicate] (0) | 2018.09.17 |