이 기사의 예에서는 PHP에서 이스케이프된 addlashes 함수 사용에 대한 보안 원칙 분석을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
먼저 ECshop에서 addlashes_deep 프로토타입을 살펴보겠습니다
function addlashes_deep($value) {
If (빈($value)) {
return $value; //비어 있으면 바로 반환;
} 그 밖의 {
return is_array($value) ? array_map('addslashes_deep', $value): addlashes($value);
} } //모든 배열 요소가 탐색될 때까지 배열을 재귀적으로 처리합니다.
}
addlashes_deep 함수 자체에는 아무런 문제가 없으나, 사용시 주의가 필요합니다
오늘 인터넷에서 이 기능이 사용하는 BUG 주입 취약점에 대해 글을 올리는 것을 우연히 보았습니다
이 함수는 addlashes 콜백 함수 참조 시 데이터 값만 이스케이프하므로, 이 과정에서 사용자가 특정 처리를 위해 배열의 키를 참조하는 경우에는 addlashes_deep이 발생할 위험이 있습니다. 함수를 변경하여 동시에 키 값을 이스케이프하거나 사용할 때 키 내용을 명시적으로 인용하지 마세요.
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.