All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sonar.l10n.php.rules.php.S3335.html Maven / Gradle / Ivy

The cgi.force_redirect php.ini configuration controls the behavior of the PHP engine when used in CGI mode. In particular, it prevents CGI scripts from being directly requested without prior web server or application processing.

When disabled, CGI scripts can be requested directly.

Why is this an issue?

Pre-processing on the server side is often required to check users authentication when working in CGI mode. Those preliminary actions can also position diverse configuration parameters necessary for the CGI script to work correctly.

What is the potential impact?

CGI scripts might behave unexpectedly if the proper configuration is not set up before they are accessed.

Most serious security-related consequences will affect the authorization and authentication mechanisms of the application. When the web server is responsible for authenticating clients and forwarding the proper identity to the script, direct access will bypass this authentication step.

Attackers could also provide arbitrary identities to the CGI script by forging specific HTTP headers or parameters. They could then impersonate any legitimate user of the application.

How to fix it

cgi.force_redirect should be enforced in the main PHP configuration file.

Note that this parameter is enabled by default.

Code examples

Noncompliant code example

; php.ini
cgi.force_redirect=0  ; Noncompliant

Compliant solution

; php.ini
cgi.force_redirect=1  ; Noncompliant

Pitfalls

The cgi.force_redirect is not supported by all web servers. For example, Microsoft IIS web server is unable to differentiate an internally redirected request from a normal one.

While using such a server, the cgi.force_redirect parameter will have to be disabled for the CGI scripts to work properly. In that case, it is important to ensure the CGI behavior is aware of the security threat.

Resources

Standards





© 2015 - 2025 Weber Informatics LLC | Privacy Policy