테스트 사이트 - 개발 중인 베타 버전입니다

bbs/write_update.php 파일 질문있습니다. 채택완료

훈훈훈훈훈 7년 전 조회 3,534

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

 

</p>

<p>$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>을 입력하세요.';

}</p>

<p>$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>을 입력하세요.';

}</p>

<p>

 

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

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

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

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

답변 2개

채택된 답변
+20 포인트
7년 전

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

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

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

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

return $name;
}
[/code]

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



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



저게 들어가면 변수명으로 오인하기 때문에 오동작이 일어날 수도 있고 보안에 문제가 생길 수도 있어서 제거하게 되어있는 것 같습니다.
훈훈훈훈훈
7년 전
볼피드님 감사합니다 정확하게 이해했습니다.
마스타
7년 전
본문에 있는 정규식 구문만으로 해석해 봤을 때,
역슬래시(\) 를 제거하기 위한 구문으로 보입니다.

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

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

메인링크

감사합니다!

로그인 후 평가할 수 있습니다

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

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

로그인