ajax 파일을 스킨 경로 안으로 옮기면 왜 안 되는 걸까요?
본문
@열린이글 님 스킨을 공부하다가 이상(?)한 걸 발견했어요.
/bbs/ajax.list_subject.php 파일의 위치를 게시판 스킨 폴더 안으로 옮기고,
게시판 list.skin.php 하단에서 ajax 파일 경로를 아래처럼 바꿨더니 작동 않더라구요.
수정 전
$.ajax({
url: g5_bbs_url+"/ajax.list_subject.php",
수정 후
$.ajax({
url: "<?php echo $board_skin_url?>/ajax.list_subject.php",
안 되는 이유가 궁금합니다.
!-->!-->답변 3
그리고 그거 좀
dataType: "json",
async: false,
cache: false,
success: function(data, textStatus) {
$("#row_list_subject_3").text(data.subject);
}
설명 하자면
<a href="<?php echo $list[$i]['href'] ?>" >
<span class="" id="row_list_subject_<?php echo $list[$i]['wr_id'] ?>"><?php echo $list[$i]['subject'] ?></span>
</a>
의 아이디 값 row_list_subject_여기 에 wr_id 값을 준건데요 위소스는 wr_id 가 3번 일경우에만 작동
아래꺼로 해야 되요
$("#row_list_subject_"+wr_id).text(data.subject);
이러게 해야 정상 작동
※ 주의 ※
ajax.list_subject.php 그대로 사용하면 위험합니다.
아래처럼 URL을 통해 '테러'가 가능합니다.
http://domain/bbs/ajax.list_subject.php?wr_id=글번호&bo_table=게시판아이디&list_subject=제목
또는
http://domain/skin/board/basic_20200416/ajax.list_subject.php?wr_id=글번호&bo_table=게시판아이디&list_subject=제목
1. 관리자 확인 ... if ( !$is_admin ) exit('only admin');
2. 글번호 확인 ... if ( !preg_match('/^\d+$/', $wr_id) ) exit('only digit');
좀 더 보강하자면, 실제 존재하는 글 번호인지 여부, wr_is_comment=0 추가 등
3. 게시판아이디, 제목 ... sql_real_escape_string($변수)
$bo_table은 실제 테이블이 있는지 체크하거나, 지정한 형식의 문자만 입력되었는지 확인하거나...
$list_subject는 길이 제한이라든가...
기타 생략합니다.