One of basic rules of security is: you don't trust client data. Ever.
You should consider your app decompiled, all "secret" keys known to attacker, etc.
You can, however, hinder attacker's attempts to forge your requests. Sending (and verifying) checksum of your request is one of methods (your idea of MD5(secret_key + params)
).
You could also switch to a binary encrypted protocol. But this requires MUCH more work and quite a different architecture of server.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…