php에서 특정 소스가 작동을 안합니다...

eyeball의 이미지

흐음.. 게시판 성격에.. 맞지 않는거 같네요...
에.. 그러니까..
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입니다

fox9의 이미지

php.ini 파일에서 register_globals = on 으로 설정하셨나요?
그 문제 같아 보입니다만...

eyeball의 이미지

온으로 하게 되면.. 보안상 문제가 발생한다고...

주변에서 하지 말라고 하더군요...

그래서 Off인 상태에서 해결방법을 알고 싶어서

이렇게 적은 것입니다.

beta의 이미지

$step = $_GET["step"] ; php를 책보고 배운게 아니라서, 올바른 방법인지는 모르겠으나 아래와 같은 페이지를 만들어 PHP Variables 을 보면 어떻게 변수를 담아 놓는지 볼수 있습니다. phpinfo.php?test0=v0&test1=v1

<?
  phpinfo();
?>

eyeball wrote:
흐음.. 게시판 성격에.. 맞지 않는거 같네요...
에.. 그러니까..
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입니다

발 담갔다. 이제 익숙해 지는길만이..

죠커의 이미지

$_GET $_POST등을 이용해야 할겁니다. php소스가 구식일듯 하네요.

카二리의 이미지

register_globals = on

저것이 on 되었을 경우라도 특별히 보안 버그가 생기는 것은 아닙니다.

다만 코드를 짤때 부주의 했을 경우 보안에 구멍이 생기는 것입니다.

$_POST['XX'] 로 쓰는 것과 $XX로 그냥 쓰는 것이 차이가 있기 때문입니다.

register_globals = on 이 되었을 경우에는 $XX 할경우 $_POST['XX'] $_GET['XX']등이 모두 참조됩니다.

별도의 변수 선언이 필요 없는 php의 경우에 register_globals = on 이 되었을 경우에 변수 하나를 타이핑 실수등을 했을 경우에 치명적인 결함이 생기게 됩니다.

이를테면 이런 코드인대

$urls = array("soft", "hard", "web", "glue");
$url = in_array($url) ? $url : false;
if($urI){
	$cmd = 'cat '.$url;
	echo `$cmd`;
}

$urI에 오타가 있는것을 알수 있는대 나름대로 보안을 신경 썼다고 생각 하겠지만, 오타 덕분에 global 설정이 on 되어 있을 경우에 엄청난 구멍이 뚤리게 되겠습니다..

이런 유형이 아니더라도 많은 유형으로 구멍이 뚤릴수 있는대, 이런 실수가 생각보다 흔하게 일어나기 때문에 register_globals = on이 보안에 좋지 않다고 하는 것입니다.

하지만 공증된 소스라면 register_globals = on 상태에서만 쓸수 있다고 해도 별 문제는 없을수도 있죠.

새 생각 :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.