PHP 웹 애플리케이션에서 인젝션이 있을 때 인젝션을 통한 로그인 우회를 방지하기 위해 사용자 로그인을 작성하는 방법
조건을 바꿀 수 없다고 가정하고 주입 방지를 위해 답변하지 마세요
일반 양방향 쓰기
·
1
$sql = "user_name=$username 및 비밀번호=$password인 사용자에서 * 선택";
$res = $db_obj-> get_one($sql);
if($res){
//로그인 성공
}
·
·
2
$sql = "사용자에서 * 선택 user_name=$username";
$res = $db_obj->get_one($sql);
if($res[password]==md5($password)){
//로그인 성공
}
·
위 2가지 모두 우회 가능하니 안전하게 작성해주세요
PHP 웹 애플리케이션에서 인젝션이 있을 때 인젝션을 통한 로그인 우회를 방지하기 위해 사용자 로그인을 작성하는 방법
조건을 바꿀 수 없다고 가정하고 주입 방지를 위해 답변하지 마세요
일반 양방향 쓰기
·
1
$sql = "user_name=$username 및 비밀번호=$password인 사용자에서 * 선택";
$res = $db_obj-> get_one($sql);
if($res){
//로그인 성공
}
·
·
2
$sql = "사용자에서 * 선택 user_name=$username";
$res = $db_obj->get_one($sql);
if($res[password]==md5($password)){
//로그인 성공
}
·
위 2가지 모두 우회 가능하니 안전하게 작성해주세요
인젝션 취약점이 있어 로그인을 우회할 수 있을 뿐만 아니라 데이터베이스도 안전하지 않습니다. 테이블 구조를 알고 있다면 관리자 계정을 삽입하는 것도 매우 간단합니다. 그래서 관건은 주사 후 어떻게 해야 하는가가 아니라 주사를 예방하는 것입니다.
가장 간단한
$sql = "user_name='".addslashes($username)인 사용자에서 *를 선택합니다."'";
일반적인 글쓰기 방식은 orm을 이용해 데이터베이스를 읽고 쓰는 것이 아닌가요?
손으로 작성한 SQL은 본질적으로 안전하지 않습니다
PDO 준비된 문 사용