php에서 특정 소스가 작동을 안합니다...
글쓴이: eyeball / 작성시간: 금, 2003/12/26 - 2:11오전
흐음.. 게시판 성격에.. 맞지 않는거 같네요...
에.. 그러니까..
php에서 보면.. 파일 하나에 여러가지 내용이 있잖아요...
예를 들어..
install.php?step=1 -> 약관 동의
install.php?step=2 -> 정보 입력
install.php?step=3 -> DB설정 등등..
이런식으로 된 파일을 읽으면...
먼저 install.php을 실행해서.. 스텝1이 실행돼서 약관에 동의함을 누르면
주소상에서는 install.php?step=2로 넘어가는데요.. 내용은 또다시 그대로 약관 페이지가 나와요...
주소창에서.. 강제로 스텝3을 넣어도.. 똑같이 맨 처음 페이지.. 그러니까 약관 페이지가 나오고요..
이런게 어느 특정 소스만 그러는게 아니라요.. 인터넷에서 돌아다니는 거의 대부분의 php소스가
이런식이예요...
이거 어떻게 해야 하나요?
apache : 1.3.23, php : 4.3.4입니다
Forums:
php.ini 파일에서 register_globals = on 으로 설정
php.ini 파일에서 register_globals = on 으로 설정하셨나요?
그 문제 같아 보입니다만...
그렇게 해결할거면.. 진작에 했죠...
온으로 하게 되면.. 보안상 문제가 발생한다고...
주변에서 하지 말라고 하더군요...
그래서 Off인 상태에서 해결방법을 알고 싶어서
이렇게 적은 것입니다.
Re: php에서 특정 소스가 작동을 안합니다...
$step = $_GET["step"] ;
php를 책보고 배운게 아니라서, 올바른 방법인지는 모르겠으나 아래와 같은 페이지를 만들어 PHP Variables 을 보면 어떻게 변수를 담아 놓는지 볼수 있습니다. phpinfo.php?test0=v0&test1=v1발 담갔다. 이제 익숙해 지는길만이..
$_GET $_POST등을 이용해야 할겁니다. php소스가 구식일듯 하네
$_GET $_POST등을 이용해야 할겁니다. php소스가 구식일듯 하네요.
- 죠커's blog / HanIRC:#CN
register_globals = on
register_globals = on
저것이 on 되었을 경우라도 특별히 보안 버그가 생기는 것은 아닙니다.
다만 코드를 짤때 부주의 했을 경우 보안에 구멍이 생기는 것입니다.
$_POST['XX'] 로 쓰는 것과 $XX로 그냥 쓰는 것이 차이가 있기 때문입니다.
register_globals = on 이 되었을 경우에는 $XX 할경우 $_POST['XX'] $_GET['XX']등이 모두 참조됩니다.
별도의 변수 선언이 필요 없는 php의 경우에 register_globals = on 이 되었을 경우에 변수 하나를 타이핑 실수등을 했을 경우에 치명적인 결함이 생기게 됩니다.
이를테면 이런 코드인대
$urI에 오타가 있는것을 알수 있는대 나름대로 보안을 신경 썼다고 생각 하겠지만, 오타 덕분에 global 설정이 on 되어 있을 경우에 엄청난 구멍이 뚤리게 되겠습니다..
이런 유형이 아니더라도 많은 유형으로 구멍이 뚤릴수 있는대, 이런 실수가 생각보다 흔하게 일어나기 때문에 register_globals = on이 보안에 좋지 않다고 하는 것입니다.
하지만 공증된 소스라면 register_globals = on 상태에서만 쓸수 있다고 해도 별 문제는 없을수도 있죠.
새 생각 :)
댓글 달기