채택완료

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

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

 
|

답변 2개 / 댓글 3개

채택된 답변
+20 포인트
2014-03-26 (수) 10:34:00


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 (검색 정렬 필드)
}

이렇게 고치셔야 해요

답변에 대한 댓글 2개

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

리자님에게는,
저같은 초보자도 많을텐데, 패치에 관해 어느 부분에 추가를 하라던가 수정을 하라던가 식으로
설명을 해주셨으면 고맙겠습니다.
맞을꺼야 님,,,하나만 더 묻겟습니다.
아래꺼는 어떻게 패치하면 되는지요...
이건 추가를 해야 하나요?

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);
2014-03-26 (수) 10:48:53
// 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;
}

답변에 대한 댓글 1개

맞을꺼야 님,,
정말로 감사합니다......
덕분에 패치 완료 하였습니다....^^
감사합니다!!

답변을 작성하려면 로그인이 필요합니다.