본문 바로가기
MySql

MySQL SQL 주입을 방지하기 위해 mysql_real_escape_string을 어디에 사용합니까?

by 베이스 공부 2020. 12. 6.
반응형

해커 그룹과 문제가 있습니다. 그들은 내 고객의 사이트를 몇 번 해킹했고 내 고객은 더 화가났습니다 :( 내 고객은 데이터베이스 (수백 개의 레코드가 있음)를 잃어 버렸고 모두 입력해야했습니다 :(

이제 몇 가지 소개를 더 따르고 있습니다.

이제 SQL 주입 문제를 해결 중입니다. 관리자 패널 로그인 매개 변수에 mysql_real_escape_string을 추가했습니다. 그렇다면이 mysql_real_escape_string을 어디에서 사용해야합니까? 사이트에 이메일 양식이 거의 없습니다. 거기에 추가 할 필요가 없다고 생각합니다 ...

메인 페이지로 index.php가 있습니다. index.php? somesql = 과 같은 URL을 통한 SQL 주입 공격을 방지하기 위해이 페이지에서 무엇을해야합니까?

저에게 조언하십시오! 너무 감사합니다 !!! :(

예를 들면 :

그런 코드가 있습니다.

public function showDetails($id) {

    // SQL Jobs Details
    $this->sql_job = "SELECT * FROM jobs WHERE id=".mysql_real_escape_string($id);
    $this->rst_job = mysql_query($this->sql_job);           
    $this->row_all = mysql_fetch_assoc($this->rst_job);     

    // SQL State
    $this->sql_state = "SELECT title FROM state WHERE id=" . $this->row_all[$this->tbl_jobs['f4']];
    $this->rst_state = mysql_query($this->sql_state);   
    $this->row_state = mysql_fetch_assoc($this->rst_state);
........

$ id에 mysql_real_escape_string을 사용하는 것으로 충분합니까? $ this-> row_all [$ this-> tbl_jobs [ 'f4']]가 아닙니다.

 

해결 방법

 




mysql_real_escape_string () 을 사용하도록 선택하면 다음 경우에만 작동합니다. used inside a string that is delimited by quotes. Never use it on 인용되지 않은 값. 여기에는 숫자 값이 포함됩니다. 대신 사용자 입력이 실제로 숫자인지 확인하십시오.

 

참조 페이지 https://stackoverflow.com/questions/2312051

 

 

반응형

댓글