2016-08-25 5 views
1

웹 사이트의 악용 사례를 테스트하고있었습니다.IS Json_encode()는 PHP에서 serialize하는 것보다 안전합니까?

취약점은 PHP 객체 주입에 관한 것입니다.

unserialize()의 오용으로 이러한 문제가 발생할 수 있습니다.

warning

그들은 우리가 json_encode()json_decode()를 사용해야하는 것이 좋습니다 :

또한, 나는 다음과 같이 공식 PHP 매뉴얼에 경고를 발견했다.

그러나 json_encode()json_decode()serialize()unsrialize()보다 더 안전한 이유는 무엇입니까?

+1

'json_decode'는 특정 클래스 (stdClass 만)로 디코딩되지 않으며,'unserialize'가 수행합니다. – tkausl

+0

그들 사이에 "보안"차이가 없습니다 –

답변

1

차이점은 serialize는 객체를 저장한다는 점입니다. 직렬화를 해제하기 전에 문자열의 내용을 변경하면 시스템을 트릭하여 악성 코드를 실행할 수 있습니다.

json_ * 함수를 사용하면 개체 만 저장하고 데이터는 저장하지 않습니다. "압축을 풀 때"객체는 원본 소스에서 인스턴스화되어야하며, 처리 할 수있는 json_decoded 데이터 만 주어질 수 있습니다.

+0

고마워요. 도움이된다 ~~ – Frank