Desserialization은 JSON 또는 PHP에 고유 한 직렬화 형식과 같은 특정 형식으로 저장된 데이터를 객체 또는 데이터 구조로 재발하는 프로세스입니다. PHP에서,`serialize ()`함수를 사용하여 원래 오브젝트 또는 배열에 대한 기능을 사용하여 직렬화 후 저장된 데이터를 복원 할 수있는`unsserialize ()`함수를 통해 사제화가 종종 수행됩니다.
PHP에서는 사막화가 간단한 프로세스 인 것처럼 보이며 많은 개발자 가이 기능을 코드에서 자주 사용합니다. 예를 들어:
클래스 사용자 { 공개 $ 이름; 공개 $ 이메일; } $ user = 새 사용자 (); $ user-> name = "Alice"; $ user-> email = "[email protected]"; // Serialized Object $ SerializedUser = Serialize ($ user); // deserialize 객체 $ unserializedUser = unserialize ($ serializedUser);
이 작업은 외관에 문제가되지 않지만, 잠재적 위험은 사막화가 심각한 보안 취약점을 도입 할 수 있다는 것입니다.
사막화로 인한 주요 문제 중 하나는 보안입니다. 악의적 인 사용자는`unsserialize ()`함수에 제공된 데이터를 제어하여 모든 객체를 임시 한 다음 이러한 객체를 사용하여 무단 작업을 수행합니다.
물체 주입 공격은 일반적인 공격 방법입니다. 공격자는 특정 직렬화 된 데이터를 구성하여 기존 클래스의 객체를 작성한 다음 특정 방법을 트리거 할 수 있습니다. 민감한 작업이 포함되어있는 방법이 있다고 가정하고 공격자가 특별히 제작 된 직렬화 된 데이터를 보내서 불필요한 보안 취약점을 초래 하여이 방법을 호출 할 수 있다고 가정합니다.
클래스 관리자 { 공개 기능 deleteuser () { // 사용자의 논리 삭제} } // 공격자에 의해 구성된 악성 객체 $ maliciousobject = 'o : 5 : "admin": 0 : {}'; // 악성 객체 비소화 ($ maliciousObject);
이 예에서, 악의적 인 객체는 잘못 만들어지고 'deleteuser'방법을 트리거하여 전체 시스템의 보안에 잠재적으로 영향을 미칩니다.
사막화 중 효과적인 데이터 검증이 부족한 것도 중요한 문제입니다. 많은 개발자는 불법 행위를 할 때 데이터에 대한 합법성 검사를 수행하지 않아 불법 대상을 처리하거나 예상치 못한 답변을 표시 할 때 프로그램이 충돌하게됩니다. 이 경우 공격자는 가짜 데이터를 전달하여 코드의 잠재적 취약점을 악용 할 수 있습니다.
사막화로 인한 보안 위험을 줄이기 위해 개발자를 도울 수있는 몇 가지 관행이 있습니다.
PHP- 특이 적 직렬화 방법 대신 JSON을 사용하는 것을 고려하십시오. JSON은 코드를 실행할 수없는 가벼운 데이터 교환 형식입니다. 따라서 데이터가 변조 되더라도 공격자는 단순히 실행 가능한 코드를 주입 할 수 없습니다.
$ data = [ 'name'=> 'alice', 'email'=> '[email protected]']; $ jsondata = json_encode ($ data); // JSON에 직렬화 $ decodedData = json_decode ($ jsondata); // 사제화
PHP는`비 제외 '함수에 대한 두 번째 매개 변수를 제공하며,이를 통해 무단 객체를 제한 할 수 있습니다. 예를 들어,`unsserialize ()`가 호출되면, 사막화를 허용하는 클래스를 명시 적으로 정의 할 수 있습니다.
$ allendClasses = [ '사용자']; $ unserializedObject = unsserialize ($ serializedData, [ "enver_classes"=> $ alluctClasses]);
물체를 사로화하는 것은 PHP에서 간단하고 편리한 기능처럼 보일 수 있지만 그 뒤에있는 보안 위험은 무시할 수 없습니다. 개발자는 사막화의 관련 운영을 진지하게 받아 들여야하며, 잠재적 공격 표면을 줄이기 위해 적절한 대안 및 보안 조치를 채택해야합니다. 코드의 보안과 데이터의 신뢰성을 보장함으로써 만 애플리케이션의 데이터 보안과 사용자가 효과적으로 보호 될 수 있습니다.