리자님, 어제 g4패치를 했더니.....

리자님, 어제 g4패치를 했더니.....

QA

리자님, 어제 g4패치를 했더니.....

본문

common.php에 아래를 추가를 했더니....
$sst = preg_replace("/[\<\>\'\"\%\=\(\)\s]/", "", $sst);
관리자 화면 첫페이지가 아래처럼 에러가 나네요. 위 소스를 추가한 위치가 틀린건가요?
원상복구를 했더니 에러는 없어졌습니다.
 
無題.jpg
 

 

이 질문에 댓글 쓰기 :

답변 2



if (isset($sst))  {
    $sst = mysql_real_escape_string($sst);
    $qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}

이부분을

if (isset($sst))  {
    $sst = mysql_real_escape_string($sst);
    $sst = preg_replace("/[\<\>\'\"\%\=\(\)\s]/", "", $sst); // 보안패치 2014-03-25
    $qstr .= '&sst=' . urlencode($sst); // search sort (검색 정렬 필드)
}

이렇게 고치셔야 해요

아,,그런거네요..ㅎㅎ
제가 초보자라서 몰랐습니다. 그냥 추가를 하면 되는가 해서....

리자님에게는,
저같은 초보자도 많을텐데, 패치에 관해 어느 부분에 추가를 하라던가 수정을 하라던가 식으로
설명을 해주셨으면 고맙겠습니다.

맞을꺼야 님,,,하나만 더 묻겟습니다.
아래꺼는 어떻게 패치하면 되는지요...
이건 추가를 해야 하나요?

lib/common.lib.php 의 sql_query() 함수에서 union 사용 및 information_schema DB 로의 접근을 허락하지 않습니다.
 
            // Blind SQL Injection 취약점 해결
            $sql = trim($sql);
            // union의 사용을 허락하지 않습니다.
            $sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
            // `information_schema` DB로의 접근을 허락하지 않습니다.
            $sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);

// mysql_query 와 mysql_error 를 한꺼번에 처리
function sql_query($sql, $error=TRUE)
{
    if ($error)
        $result = @mysql_query($sql) or die("<p>$sql<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
    else
        $result = @mysql_query($sql);
    return $result;
}

위부분을  아래와 같이 수정하세요


// mysql_query 와 mysql_error 를 한꺼번에 처리
function sql_query($sql, $error=TRUE)
{
    // Blind SQL Injection 취약점 해결
    $sql = trim($sql);
    // union의 사용을 허락하지 않습니다.
    $sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
    // `information_schema` DB로의 접근을 허락하지 않습니다.
    $sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);

    if ($error)
        $result = @mysql_query($sql) or die("<p>$sql<p>" . mysql_errno() . " : " .  mysql_error() . "<p>error file : $_SERVER[PHP_SELF]");
    else
        $result = @mysql_query($sql);
    return $result;
}

답변을 작성하시기 전에 로그인 해주세요.
전체 123,652 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT