2010-02-19 4 views
2

안녕하세요 모두PHP에서 사용되지 않는 코드입니까?

PHP 버전 5.2.11을 실행 중이고 이전 버전 (4 일 가능성이 있음)에서 실행 중이라고 말한 사이트가 제공되었습니다.

MySql을 업데이트하는 여러 개의 양식이있는 여러 페이지가 작동하지 않는 이상한 문제가 있습니다. 문제는 업데이트 스크립트에 사용 된 변수가 PHP의 어느 곳에서나 정의되지 않은 부분입니다. 예.

UPDATE users SET FirstName='$form_firstname'WHERE UserID='$id'" 

이제 우리는

$form_firstname = $_POST['form_firstname']; 
UPDATE users SET FirstName='$form_firstname'WHERE UserID='$id'" 

다음 업데이트가 작동 ..로 변경합니다. 모든 업데이트 문에 정의 된 모든 단일 변수에 대해이 작업을 수행 할 수 있지만 이전에는이 ​​변수가 사용되는 일부 비추천 코드를 살펴 보았을 것으로 생각됩니다. 내가 무엇을 찾았는지

import_request_variables 

진술을 제외하고는 nada.

누구나이 문제를 일으키는 새 서버에서 기본적으로 꺼져 있거나이 변수가 어딘가에 선언되어야한다고 생각할 수 있습니까?

건배 muchly

+0

귀하의 사이트가에 있던 말 했는가 어떤 도메인? * 사악한 미소 * 진지하게 : 이것은 멍청한 개발자 나 게으른 개발자 또는 무식한 관리자가 누그러 뜨린 개발자의 결과입니다. 아마 모든 것의 콤보 일 겁니다. 이제 당신 (또는 귀하의 고객)이 옛날 조잡한 가격을 지불하고 있습니다. – anddoutoi

답변

8

register_globals입니다. DO NOT 이것을 사용하십시오. gaping security hole입니다.

+0

나는이 코멘트를 고수한다. 그것을 확인하십시오 : http://php.net/manual/en/security.globals.php – Nacho

+0

Ah gotcha, 그래서 우리는 수동으로 $ _POST를 그 다음에 집어 넣어야합니까? – amjags

+4

@ Stu,뿐만 아니라, 당신은 1) 그들을 탈출해야합니다; 또는 2) 준비된 진술을 사용하십시오. – chelmertz

-2

난 당신이 php.ini 파일

+1

절대하지 마십시오. 위험합니다! – middus

+0

예 - 이것은 바보입니다. – symcbean

+1

... 및 misspelt – symcbean

0

난 당신이 뭔가 심각하게 그것을 사용하지 않는 희망에 = resister_global 설정할 필요가 있다고 생각합니다. 이 코드는 모든 종류의 침입, 주입 및 해킹에 개방되어 있습니다. 나는 당신에게 두 가지 대답을했습니다. 빠른 & 더티 : register_globals를 켭니다. 대안 : 누군가를 찾아 처음부터 다시 작성하거나 더 나은 앱을 찾으십시오.

+0

심각한 것은 없으며 요청을 회피하고 있습니다. 예를 들어 코드가 제거되었습니다. 건배. – amjags

1

다른 곳에서 언급했듯이 원래 코드는 register_globals가 활성화되어 있기 때문에 매우 나쁜 관행입니다.

extract($_GET); extract($_POST); 

... 거의 같은 효과를 가지고 있지만 스크립트 별 스크립트를 기반으로 : 당신은 (글로벌 범위) 각 페이지의 상단에 약간의 코드를 추가 할 수있는 빠른 해킹으로

. 그러나 코드를 제대로 다시 구현하는 동안 사이트를 계속 실행하는 것입니다. 이것은 코드에 대한 유일한 문제는 아니며 SQL 문으로의 사용자 입력을 선택하지 않으면 DISASTER를위한 처방입니다.

당신은 같은 코드를 재 작성해야

....

$form_firstname = mysql_real_escape_string($_POST['form_firstname'], $db_handle); 
$id = mysql_real_escape_string($_POST['id'], $db_handle); 
$qry="UPDATE users SET FirstName='$form_firstname'WHERE UserID='$id'"; 

C.

+0

건배 symcbean, 예, 코드 삽입 위험이 register_globals 문제와 관련하여 궁금했습니다. TBH는 많은 것들을 다시 할 필요가있는 것처럼 보입니다. 감사. – amjags

관련 문제