mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-10-03 07:55:22 -04:00
The proxy= handler in web/views/image.php validates the resolved address of the URL host against FILTER_FLAG_NO_RES_RANGE, then fetches with fopen() using PHP's default follow_location=1. A host that passes the check could answer 302 to 127.0.0.1 (or ::1, 169.254.169.254) and the stream wrapper would request it, returning the loopback content. Set follow_location to 0 in the http stream context so a 3xx is not followed. The same $opts is reused for the digest auth retry, so both fetches are covered. Camera discovery has no need for redirects. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit ec71edad630ff614eaae499146d33fd780449715)
Modern ZoneMinder Skin
This web frontend to ZoneMinder is a complete rewrite of the classic frontend, based on CakePHP.