Authorize.net, Silent Post and Empty/Blank User-Agent
The User-Agent that Authorize.Net send during a "Silent Post" is empty.
Most application firewalls (used for PCI compliance) are configured to block blank/empty user-agents.
Open Web Application Security Project (OWASP) blocks empty user agents by default:
https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/master/base_rules/modsecurity_crs_21_protocol_anomalies.conf
http://stackoverflow.com/a/10139985/693068
#Missing/Empty User-Agent Header
#-=[ Rule Logic ]=-
#These rules will first check to see if a User-Agent header is present.
#The second check is to see if a User-Agent header exists but is empty.
So does WP WAF (WordPress Application Firewall):
https://github.com/guelfoweb/wp-waf
and 5G Blacklist
http://perishablepress.com/5g-blacklist-2013/
and Bad Behavior
http://bad-behavior.ioerror.us/
I report this issue 15+ months ago via Twitter & merchant feedback form. (NOTE: Feedback form only accepts 1,000 characters.)
https://twitter.com/AuthorizeNet/status/309788328541167618
We wasted time troubleshooting why silent posts weren't being posted. Are there any valid/legitimate reasons why a blank user agent isn't passed? If no change is to be made, could you please update documentation throughout the Authorize.Net website and state that "websites running application firewalls may be impacted and may have to disable some rules in order to accept silent posts."