bbs/write_update.php 파일 질문있습니다.

bbs/write_update.php 파일 질문있습니다.

QA

bbs/write_update.php 파일 질문있습니다.

본문

bbs/write_update.php 파일에 아래와 같은 부분이 있는데요

 


$wr_subject = '';
if (isset($_POST['wr_subject'])) {
    $wr_subject = substr(trim($_POST['wr_subject']),0,255);
    $wr_subject = preg_replace("#[\\\]+$#", "", $wr_subject);
}
if ($wr_subject == '') {
    $msg[] = '<strong>제목</strong>을 입력하세요.';
}
$wr_content = '';
if (isset($_POST['wr_content'])) {
    $wr_content = substr(trim($_POST['wr_content']),0,65536);
    $wr_content = preg_replace("#[\\\]+$#", "", $wr_content);
}
if ($wr_content == '') {
    $msg[] = '<strong>내용</strong>을 입력하세요.';
}

 

$wr_subject = preg_replace("#[\\\]+$#", "", $wr_subject);

$wr_content = preg_replace("#[\\\]+$#", "", $wr_content);

이거 두 부분은 무슨 의미로 사용되는 것인가요? 용도가 무엇인가요?

이 질문에 댓글 쓰기 :

답변 2

제목과 내용에서 특수문자들을 걸러내는 구문입니다. 

정규표현식을 찾아보시면, 이해하는데 도움이 될 것 같습니다. 

 

답변감사합니다.
특수문자를 제거하고 있다는 정도는 이해가 갑니다.

www/common.lib.php 파일에서


// 파일명에서 특수문자 제거
function get_safe_filename($name)
{
    $pattern = '/["\'<>=#&!%\\\\(\)\*\+\?]/';
    $name = preg_replace($pattern, '', $name);

    return $name;
}


이렇게 전체 특수문자를 제거하는게 있는데요
그렇다면 $wr_subject = preg_replace("#[\\\]+$#", "", $wr_subject);
여기 부분에서는 무슨 특수문자를 제거 하는 건가요?
특히 내용 부분에서는 특수문자가 들어가면 안되는 건가요?
보통 내용 부분에는 여러가지 긴~ 문장을 사용하니 특수문자가 들어가는게 정상이 아닐까해서요
그리고 그 특수문자를 제거하는 이유가 궁금한겁니다.

주석에도 써있듯이 common.lib 파일에선 파일명의 특수문자를 제거 하는거구요.

 

제목과 내용에서 저런 정규식이 써져있는건 $나 #이 php에서 사용되는 특수문자이기 때문입니다.

 

저게 들어가면 변수명으로 오인하기 때문에 오동작이 일어날 수도 있고 보안에 문제가 생길 수도 있어서 제거하게 되어있는 것 같습니다.

본문에 있는 정규식 구문만으로 해석해 봤을 때,
역슬래시(\) 를 제거하기 위한 구문으로 보입니다.

sql 구문에 역슬래시가 들어가면,
오류가 발생하거나 인젝션 공격이 될 수도 있습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 15,432
QA 내용 검색
filter #php ×

회원로그인

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