리자님, 어제 g4패치를 했더니.....
본문
common.php에 아래를 추가를 했더니....
$sst = preg_replace("/[\<\>\'\"\%\=\(\)\s]/", "", $sst);
$sst = preg_replace("/[\<\>\'\"\%\=\(\)\s]/", "", $sst);
관리자 화면 첫페이지가 아래처럼 에러가 나네요. 위 소스를 추가한 위치가 틀린건가요?
원상복구를 했더니 에러는 없어졌습니다.
답변 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 (검색 정렬 필드)
}
이렇게 고치셔야 해요
// 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;
}
답변을 작성하시기 전에 로그인 해주세요.