외우지말고 이해하라.

외우는 것 보단 이해해서 내것으로 만들어 활용하기

Web Back-End/PHP

PHP 학습 04 - SQL 인젝션

hyg4196 2021. 6. 1. 09:11
반응형

- SQL 인젝션 해킹 기법 학습 - 

 


- 비밀번호 가 들어갈 부분에 코드를 넣어 해킹 ex) ' OR '' = '' PW 부분에 입력하면 ''=''는 참이므로 로그인이 된다.
- 해결 방법 : SQL 인젝션을 막아주는 PHP 함수를 사용 
- mysqli_real_escape_string()

### PHP, DB 학습 02
- SQL 인젝션 해킹 방어 : 다른 방법 stmt 쿼리
- $sql = "SELECT * FROM MEMBER AS M WHERE M.loginId = ? AND M.loginPw = ?"
- $stmt -> $dbConn->prepare($sql);
- $stmt -> bind_param('ss', $loginId,$loginPw);
- $stmt -> $stmt->execut();
- $result = $stmt -> get_result();
- $member = $result -> fetch_assoc();

### PHP, DB 학습 03
- DB secSql 클래스 도입
- ! php 는 -> 가 . 과 같은 역할, ex) slq.add() == sql->add()
- $sql = DB__secSql();
- $sql->add("SELECT *");
- $sql->add("FROM MEMBER AS M");
- $sql->add("WHERE M.loginId = ?", $loginId);
- $sql->add("AND M.loginPw = ?", $loginPw);
- 클래스 생성

 

 class DB__secSql{ 
    private string $sql = "";  
    private array $params = []; 
     
    public __con 
     
    public function add($sqlBit, $param = null){ 
      $this->sql .= " " . $sqlBit; 
       
      if($param){ 
        $this->params[] = $param; 
      } 
    } 
 } 
  function DB__secSql(){ 
    return new DB__SeqSql(); 
  }

 

 

 

사진 출처 : https://noirstar.tistory.com/264

반응형