Quantcast
Channel: 우분투 한국 커뮤니티
Viewing all articles
Browse latest Browse all 4577

Re: 로컬호스트 실행하니 gedit로 소스 프로그램이 보입니다.

$
0
0
Author: protochaos
Forum: 데스크탑/소프트웨어 게시판
Date: 2014-01-15

아래 두 개 프로그램 예제가 말썽을 일으킵니다.
1번을 크롬에서 localhost 실행하니 비정상적으로 뭔가 다운로드 한다고 시간이 걸리더군요.
중지하고 다시 하니 비슷한 증상이 재발되는 가 싶더니 소스프로그램이 gedit에 나타납니다.
다른 html 프로그램도 크롬에서 실행하니 소스가 gedit로 보입니다.
몇 개를 더 테스트 해도 같은 현상입니다.
크롬을 사용않고 불여우 씁니다.==> 정상적으로 됩니다.
왜 그런가요? 고수님들 9~뻑!


localhost에서 실행한다는 의미가
주소표시줄에 http://localhost/x.php이와 같이 입력하신 것입니까?
크롬에서 실행하니 소스가 gedit로 보인다는 것이,
소스 보기를 했을 때, gedit가 열린다는 것인가요? 아니면, 열릴 때 부터 gedit로 열리고,
그 안의 내용이 소스가 보여지더라는 것인가요?

만일 firefox file://x.php이런 식이 었는데, gedit가 열린 다면, 그것은 ubuntu에서의 mime설정에 관련된 문제이기 때문에,
gvfs-mime --set application/x-php gvim.desktop
이런 식으로 기본 프로그램을 바꿔주시면 됩니다.

주소표시줄에 php의 URL을 적었음에도, php의 소스가 나온다면,
이것은 웹서버에서 php코드를 실행하여 html로 전송해 주지 못해서 php코드가 그대로 보여지는 것이므로,
apache에서 php 핸들러를 설정하고, mime을 설정해 주셔야 합니다.
apache설정은 여러 파일로 나눠서 있어서 찾기 쉽지 만은 않습니다.
/etc/apache2/apache2.conf
/etc/apache2/site-enabled/default
/etc/apache2/mods-available/php5.conf
등을 살펴보시기 바랍니다.

그리고, extract 함수는 문제의 여지가 있습니다.
_GET["변수"], _POST["변수"] 이와 같이 명시적으로 사용함이 좋습니다.
왜냐면, extract 함수는 배열을 풀어서 변수에 할당하는데, GET,POST등은 사용자에 의해 얼마든지 추가값이 전달될 수 있기 때문입니다.
예를들어, x.php?y=2014&m=1 이렇게 전달되는 것이 정상적임에도,
사용자가 주소표시줄에 x.php?y=2014&m=1&hackvar=blahblah 이런 식으로 입력하면 어떻게 되겠습니까?
POST의 경우도, 소스를 다운 받은 뒤, 변경하여, form에 새로운 변수나, 입력변수를 설정하고, <BASE href="http://.....">이런 식을 코드를 넣어서,
로컬컴퓨터에서 원격으로 폼 전송을 시도하면 문제가 발생할 소지가 있습니다.

이미 _GET,_POST가 이미 배열 변수이기 때문에, 따로 변수를 할당할 필요가 없고,
편이상 그렇게 사용하고 싶다면, 지역변수로 할당하는 것이 좋겠죠.

foreach ($_GET as $key=>$val) {
echo "$key=$val\n"
}
혹은
foreach (array_keys($_GET) as $key) {
echo "$key=$_GET[$key]\n";
}

이와 같이 말이지요.

http://docs.php.net/manual/kr/function.extract.php
위의 메뉴얼을 보면 분명히 경고하고 있습니다.
굳이 편하게 사용하고 싶으시면, extract 함수의 두번째 인수에 EXTR_SKIP등을 설정하시는 것이 좋습니다.

Viewing all articles
Browse latest Browse all 4577

Trending Articles