I would actually say the problem lies in:
"Assuming good PHP Code."
You can't take this for granted. Ideally, that server will go in a DMZ where the LAN can access it, but the DMZ can't access the LAN. The idea is that you assume your public facing server will get compromised, and then you want to limit the damage. By having a separate firewall between your LAN and the DMZ you likely limit the damage. So with a DMZ setup, subversion is probably not going to be on the public facing server. If you can't afford this extra server, creating a virtual machine and having the public facing server in that might be a sort of poor man's DMZ.
I also would take the extra step to only open up the ports to the local subnet that are needed (You probably need to trust you LAN more, but still limit it if you can). It probably won't be that many if you are using the state module (redhat/centos default setup).
Also, don't forget about security updates for the OS and applications.