개발 Q&A

제목 이전에 php에서 ci를 적용할수 있을까요 라는 글을 올렸었는데...
카테고리 PHP
글쓴이 정수리 작성시각 2017/04/20 09:36:14
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 11216   RSS

이전에 php에 Ci를 적용할수 있을까요라는 게시글을 올렸었습니다.

 

그 이후 답변을 통해 2.x대에서는 할수 없다는 답변을 듣고 좌절을 한번하고

 

관리자 페이지에 접속이 안되는 기관들의 관리자 페이지에 접속을 시도해보면

 

경고창으로  '비정상적인 접근 입니다(x)'가 출력이 되더라구요

 

x의 경우 알파벳인데 공통적으로 A라는 알파벳이 출력이 됩니다.

 

그래서 코드상에서 

 

살펴보니


if($_SESSION['token'] == $_POST['token']) { 

		// uid, upw의 SQL인젝션을 차단해야 한다.
		//$uid = $_POST['uid'];
		//$upw = $_POST['upw'];
		$uid = checkSQL($_POST['uid']);
		$upw = checkSQL($_POST['upw']);
		$uip = $_SERVER['REMOTE_ADDR'];
		if(!$uid or !$upw) { msg("비정상적인 접근(A)입니다.", -1, "exit");	}

                function checkSQL($str) { return @mysql_real_escape_string($str); }	// 

 

이 소스부분인데

 

checkSQL함수 문제 이거나 post로 넘어도 데이터가 문제 인것으로 추측이 됩니다

 

로컬에서 checkSQL함수를 테스트 해보았지만 정상적으로 데이터를 잘 넘겨주더라구요;

 

그렇다면 post로 넘어온 데이터가 없거나 문제가 되는것 같은데

 

form통해 전송되는 값이 안넘어 올수가 있거나 문제가 될수 있을까요?

 

post로 넘어오는 값을 서버에서 차단하거 제어 할수가 있나요??

 다음글 ci에서 서버에 ip로 접속했을때 접속못하도록 막는 로... (5)
 이전글 아래에 이어서 한번 더 도움을 부탁드립니다... (4)

댓글

/ 2017/04/20 12:31:05 / 추천 0

우선 문제가 될법한 부분이 checkSQL 함수 문제거나 post로 넘어온 데이터의 문제일거라 생각하시는거죠?

그럼 디버깅 방법은 간단해요. 우선 var_dump로 데이터가 제대로 넘어오는지부터 확인해보세요 var_dump($_POST);

이후의 가설은 checkSQL함수의 문제가 있을거라 생각한다면, 마찬가지 방법으로 코드 한줄 한줄 문제가 될 법한 곳에 데이터를 출력해보세요.

더 편한 방법은 xdebug를 이용해서 데이터를 확인해 보는 방법이 있는데 이부분은 포럼에 자료 많으니 시간되실때 한번 참고해 보시고요.

/ 2017/04/20 12:34:12 / 추천 0
이것도 출력해봐서 var_dump($_SERVER); 원하게 동작하는지도 확인해보시고요.
정수리 / 2017/04/20 12:52:19 / 추천 0

@닉

답변감사합니다.

제가 자세한 상황을 말씀을 안드렸네요 ㅜㅜ 회사 내부에서는 잘되는데 

 

외부 몇몇 기관에서 안되어 경고창에서 출력되는 부분을 확인하여 어떤 부분이 문제일것이다 추측하고 있는 상황입니다ㅜㅜ

디버깅을 해보고 싶지만 

외부기관의 서버에 접속을 할수 있는 상황이 아니라서 확인이 어렵네요 ㅜㅜ

공공기관이다 보니 미리 일정을 잡지 않고 방문하기도 어렵구요ㅜ.ㅜ