Establishing Digital Trust: Don't Sacrifice Security for Convenience
As the Web continues its march toward becoming the de facto interface for the world's software applications, developers must find effective ways to not only communicate with server processes, such as MySQL, but also other operating system tools, such as a shell or Ruby script. In this tutorial, I'll show you how to securely execute a variety of system-based commands via a PHP script, demonstrating how to build Web applications that can tightly integrate with both the operating system and third-party software.
Always be mindful of security
Hopefully, you understand how important it is to thoroughly validate all user input accepted through a Web form; after all, if you neglect this task, your data could be stolen or damaged via a SQL injection attack, or your users could be spoofed via a cross-site scripting attack.
The risks of not properly vetting operating system commands initiated through a PHP script are no less severe. With this in mind, before jumping into a few examples, it's worth taking a moment to understand how this particular feature can pose a significant security risk to not only your Web site, but also to the stability of the entire Web server.
When PHP is installed as an Apache module, it operates on behalf of the system user (which has assumed ownership of the Apache daemon). This means that when PHP executes an operating system command, the Apache daemon owner carries out that command. Therefore, any permissions assigned to the Apache daemon owner are applied when executing this command. Some improperly configured servers actually run Apache using the root user, meaning an errant PHP script could conceivably delete large parts of the operating system and any data stored within! Even in the more likely case of your server operating on behalf of a non-root user, the security risks remain nonetheless severe.For the full step-by-step tutorial from our sister site, PHPBuilder.com, click here.