İnternet'te en çok Wordpress alt yapısında olan siteler olduğundan en çok saldırıya uğrayan sitelerde tabii ki wordpres siteleri olmaktadır. Özellikle birçok kullanıcı temaları çeşitli yollardan (nulled, warez vb.) temin edip kuruyorlar. Buraya kadar her hangi bir sıkıntı yok. Sıkıntı temaları yükledikten sonra içerisinde gizli kodlamalar olabilmesidir. Genelde kodlama çok dikkat edilmeyen kısımlara konmaktadır. Çünkü herkes normal yerlere önlem almaktadır.
Bende sizlere Wordpress temalar için güvenlik önlemlerinden bazılarını nasıl yapacağınızı anlatacağım. İstediğiniz gibi ekleme çıkarma yaparak kendinize uyarlayabilirsiniz.
Yapmamız gereken Wordpress tema dosyaları içerisinde bulunan functions.php içerisine aşağıdaki komutları yerleştirdiğiniz taktirde siteniz hakkındaki bazı bilgiler silinecektir. Böylelikle sitemizde kullandığımız temaya ait bazı bilgiler kötü amaçlı kişiler tarafından öğrenilemediği için saldırıya karşı önlem almış olacağız. Wordpress temamıza yapacağımız ayarlar ve işlevleri:
- Dosyaların sonunda bulunan versiyon bilgilerini kaldırmaya yarar.
- Site içerisindeki E-mail adreslerini kaldırmaya yarar.
- Admin bar özelliği kaldırılır.
- Admin bar seçenekleri kullanıcı panelinden kaldırılır.
- CSS ve JS dosyalarının versiyon bilgileri kaldırılır.
- Admin olmayan kullanıcılardan admin bildirimleri kaldırılır.
- Belirtilen farklı bir avatar eklenir.
- Wordpress 4.2 veya sonrasında ile gelen emojicons özelliği kaldırılır.
<?php
/* Custom Wordpress Functions
/*------------------------------*/
function _remove_script_version( $src ){
$parts = explode( '?ver', $src );
return $parts[0];
}
add_filter( 'script_loader_src', '_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', '_remove_script_version', 15, 1 );
function wptao_disable_version_info() { return ''; }
add_filter('the_generator', 'wptao_disable_version_info');
add_filter('login_errors',create_function('$a',"return null;"));
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
/*E-mail Remove*/
function security_remove_emails($content) {
$pattern = '/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})/i';
$fix = preg_replace_callback($pattern,"security_remove_emails_logic", $content);
return $fix;
}
function security_remove_emails_logic($result) {
return antispambot($result[1]);
}
add_filter( 'the_content', 'security_remove_emails', 20 );
add_filter( 'widget_text', 'security_remove_emails', 20 );
/* Admin Bar özelliğini iptal et */
add_filter( 'show_admin_bar', '__return_false' );
/* Admin Bar seçeneklerini kullanıcı profilinden kaldır */
remove_action( 'personal_options', '_admin_bar_preferences' );
/*Css and JS Versiyon Remove*/
function vc_remove_wp_ver_css_js( $src ) {
if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) )
$src = remove_query_arg( 'ver', $src );
return $src;
}
add_filter( 'style_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
add_filter( 'script_loader_src', 'vc_remove_wp_ver_css_js', 9999 );
/*Hide admin notifications for non admins*/
function hide_update_notice_to_all_but_admin_users()
{
if (!current_user_can('update_core')) {
remove_action( 'admin_notices', 'update_nag', 3 );
}
}
add_action( 'admin_head', 'hide_update_notice_to_all_but_admin_users', 1 );
/*Costum Avatar*/
add_filter( 'avatar_defaults', 'newgravatar' );
function newgravatar ($avatar_defaults)
{
$myavatar = "avatarlink";
$avatar_defaults[$myavatar] = "avatarNick";
return $avatar_defaults;
}
function disable_wp_emojicons() {
// all actions related to emojis
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
// filter to remove TinyMCE emojis
add_filter( 'tiny_mce_plugins', 'disable_emojicons_tinymce' );
}
add_action( 'init', 'disable_wp_emojicons' );
function disable_emojicons_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
Sitenizin çok fazla trafiği yoksa ya da pek popüler değilse, bu kadar önlem almak gereksiz olabilir. Fakat 100k ve üzeri ziyaretçilere ulaşan sitelere saldıranlar da çok oluyor. Bu önlemler sayesinde sitenizi kolaylıkla koruyabilirsiniz. Bunun dışında da birçok güvenlik önlemleri var. Benim şu an sizlere ifade edeceklerim bunlardır. Eğer başka var ise lütfen bildirmeyi ve yazmayı unutmayın.
Umarım faydalı olmuştur. Görüş ve önerilerinizi yorum bölümünde bekliyorum.