2011-10-15 4 views
0

코드 찾기 here 입력란을 PHP 스크립트에 게시하고 있습니다. 결과는 다음과 같습니다.NAME에 기반한 변수에 POST JSON을 자동 할당

data:{ 
"textfield": ["",""], 
"dropdown": ["option1","option1"], 
"siteTitle":"this is the site title", 
"siteKey":"", 
"siteurl":"", 
"address1":"", 
"address2":"", 
"address3":"", 
"landline":"", 
"method":"addSite", 
"small-input":"", 
"medium-input":"", 
"large-input":"" 
} 

다음 필드를 사용하여 각 필드를 선택합니다.

$data = $_POST['data']; 
$data =stripslashes($data); 
$obj = json_decode($data); 
$siteTitle = sanitize($obj->siteTitle); 
if (!$siteTitle){echo json_encode(array("msg"=> "Site title missing"));break;} 

마다 자동으로 게시 field 통해 단계와 name에 따라 변수에 할당하는 PHP에서 방법이 있나요?

$array = json_decode($json, true); 
extract($array); 

을하지만이 작업을 수행하지 나에게 강력히가 하는 것이 좋습니다 보자 데자 VU 걱정되는 사람에 대한

, don't be.

+0

기본적으로 다소 다른 보안 위험이있는 [register_globals] (http://php.net/manual/en/security.globals.php) 버전을 요구하고 있습니다. 나는 그 길로 가지 않을 것을 제안합니다. – Amber

+0

아니요 :) ~ – AlienWebguy

답변

1
$obj = json_decode($data); 
foreach($obj as $key => $val) 
{ 
    $$key = $val; 
} 
var_dump($method); // 'addSite' 
+0

이 코드의 마지막 부분을 이해하게 도와주세요. var_dump를 통해 전달 될 내용은 무엇입니까? –

+0

4 년 전 나는 전혀 모른다. 오늘은 말이 안된다. – AlienWebguy

0

이 작업을 수행 할 수 있습니다. 그것은 매우 게으른 프로그래밍이며 스크립트를 다양한 주입 공격에 개방하고 기본적으로 PHP의 "register_global 기본값을"악명 높은 날에 몹시 어리 석 게 바보 같은 시간을 재현하려고합니다.

+0

예, 이것 또한 제 생각이었습니다. 그래서 이것은 기술적 인 것만 큼 윤리적 질문이었습니다. 그러나 변수를 요청하고 해당 변수가 사용 가능하게되는 것과 달리 위생적으로 취약점을 볼 수는 없습니다. – maxum

+0

어떤 것도 악의적 인 사용자가 자신의 양식에 대한 위조를 할 수없고'_SESSION [issuperuser] = 1' 유형의 것을 제출할 수 없다고 말하지 않습니다. 이 방법으로 자동 생성하려는 각 변수를 수동으로 지정하지 않고 제출 된 모든 var을 반복하면 ANYTHING을 스크립트에 삽입 할 수 있습니다. 이것이 왜 register_globals가/그런/항상 그런 moronic 생각이 될 것입니다. –