>  기사  >  백엔드 개발  >  PHP 웹 애플리케이션에 인젝션이 있을 때 인젝션을 통한 로그인 우회를 방지하기 위해 사용자 로그인을 작성하는 방법은 무엇입니까?

PHP 웹 애플리케이션에 인젝션이 있을 때 인젝션을 통한 로그인 우회를 방지하기 위해 사용자 로그인을 작성하는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-08-04 09:19:351046검색

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 준비된 문 사용

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.