Isn't the "".join also dangerous?
get_str_hash(
"".join(
[
build_request.distro,
build_request.version,
build_request.version_code,
build_request.target,
...
You can shift characters between adjacent fields without changing the hash. Maybe you cannot compromise the system directly, but you could poison the cache with a broken image, or induce a downgrade.
Yes, one should use a hmac for hashing multiple inputs, for the reason you explained.
Edit: s/hmac/incremental hashing/