| Current Path : /home/krobertfnz/www/wp-content/plugins/wp-defender/src/component/security-tweaks/servers/ |
| Current File : /home/krobertfnz/www/wp-content/plugins/wp-defender/src/component/security-tweaks/servers/nginx.php |
<?php
namespace WP_Defender\Component\Security_Tweaks\Servers;
class Nginx {
/**
* Service type.
*
* @var string
*/
private $type = null;
public function __construct( $type ) {
$this->type = $type;
}
/**
* Check whether the issue has been resolved or not.
*
* @return bool
*/
public function check() {
$url = '';
if ( 'prevent-php-executed' === $this->type ) {
$dir = wp_upload_dir();
$url = $dir['baseurl'] . '/wp-defender/index.php';
}
if ( 'protect-information' === $this->type ) {
$url = defender_asset_url( '/languages/' . WP_DEFENDER_POT_FILENAME );
}
return Server::ping_test_failed( $url );
}
/**
* Process the rule.
*
* @return bool
*/
public function process() {
return true;
}
/**
* Revert the rule.
*
* @return bool
*/
public function revert() {
return true;
}
/**
* Get rules.
*
* @return string
*/
public function get_rules() {
$rules = '';
if ( 'prevent-php-executed' === $this->type ) {
if ( defender_is_windows() ) {
$wp_includes = str_replace( ABSPATH, '', WPINC );
$wp_content = str_replace( ABSPATH, '', WP_CONTENT_DIR );
} else {
$wp_includes = str_replace( $_SERVER['DOCUMENT_ROOT'], '', ABSPATH . WPINC );
$wp_content = str_replace( $_SERVER['DOCUMENT_ROOT'], '', WP_CONTENT_DIR );
}
$rules .= "## WP Defender - Prevent PHP Execution ##" . PHP_EOL;
$rules .= PHP_EOL;
$rules .= "# Stop php access except to needed files in wp-includes" . PHP_EOL;
$rules .= "location ~* ^$wp_includes/.*(?<!(js/tinymce/wp-tinymce))\.php$ {" . PHP_EOL;
$rules .= " internal; #internal allows ms-files.php rewrite in multisite to work" . PHP_EOL;
$rules .= "}" . PHP_EOL;
$rules .= PHP_EOL;
$rules .= "# Specifically locks down upload directories in case full wp-content rule below is skipped" . PHP_EOL;
$rules .= "location ~* /(?:uploads|files)/.*\.php$ {" . PHP_EOL;
$rules .= " deny all;" . PHP_EOL;
$rules .= "}" . PHP_EOL;
$rules .= PHP_EOL;
$rules .= "# Deny direct access to .php files in the /wp-content/ directory (including sub-folders)." . PHP_EOL;
$rules .= "# Note this can break some poorly coded plugins/themes, replace the plugin or remove this block if it causes trouble" . PHP_EOL;
$rules .= "location ~* ^$wp_content/.*\.php$ {" . PHP_EOL;
$rules .= " deny all;" . PHP_EOL;
$rules .= "}" . PHP_EOL;
$rules .= PHP_EOL;
$rules .= "## WP Defender - End ##";
}
if ( 'protect-information' === $this->type ) {
if ( defender_is_windows() ) {
$wp_content = str_replace( ABSPATH, '', WP_CONTENT_DIR );
} else {
$wp_content = str_replace( $_SERVER['DOCUMENT_ROOT'], '', WP_CONTENT_DIR );
}
$rules .= '## WP Defender - Prevent information disclosure ##';
$rules .= PHP_EOL;
$rules .= '# Turn off directory indexing autoindex off;' . PHP_EOL;
$rules .= PHP_EOL;
$rules .= '# Deny access to htaccess and other hidden files' . PHP_EOL;
$rules .= 'location ~ /\. {' . PHP_EOL;
$rules .= ' deny all;' . PHP_EOL;
$rules .= '}' . PHP_EOL;
$rules .= PHP_EOL;
$rules .= '# Deny access to wp-config.php file' . PHP_EOL;
$rules .= 'location = /wp-config.php {' . PHP_EOL;
$rules .= ' deny all;' . PHP_EOL;
$rules .= '}' . PHP_EOL;
$rules .= PHP_EOL;
$rules .= '# Deny access to revealing or potentially dangerous files in the /wp-content/ directory (including sub-folders)' . PHP_EOL;
$rules .= "location ~* ^$wp_content/.*\.(md|exe|sh|bak|inc|pot|po|mo|log|sql)$ {" . PHP_EOL;
$rules .= ' deny all;' . PHP_EOL;
$rules .= '}' . PHP_EOL;
$rules .= '## WP Defender - End ##';
$rules .= PHP_EOL;
}
return $rules;
}
}