SQL Injection: Understanding the Threat and How to Avoid It