1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Tìm hiểu thêm.

Cách bảo mật chống DOS cho các web

Thảo luận trong 'Security' bắt đầu bởi hoduylinh, 26/9/12. Trả lời: 0 Xem: 835.

Chia sẻ trang này

Thị Trường Xe Máy

  1. hoduylinh

    hoduylinh New Member
    New Member

    Tham gia ngày:
    28/8/12
    Bài viết:
    13
    Đã được thích:
    0
    Vận dụng cho NUKEVIET CMS, ta có thể thấy:
    Cách 1: Chống iframe:
    Cách này đã được tích hợp sẵn vào hệ thống NukeViet. Để bật nó, bạn cần mở file includes/constants.php, tìm đến đoạn:
    MÃ: CHỌN TẤT CẢ
    define( "NV_ANTI_IFRAME", 0 );
    Sửa thành:
    MÃ: CHỌN TẤT CẢ
    define( "NV_ANTI_IFRAME", 1 );
    Cách 2: Chống tải lại trang web có ác ý:
    Chúng ta cũng đã có phương pháp chống DDos này. Để kích hoạt nó, bạn chỉ việc vào khu vực cấu hình chung của site và kích hoạt tiện ích kiểm tra và chuyển hướng các REFERER bên ngoài đến trang chủ.

    Cách 3: Giới hạn số kết nối website tại một thời điểm
    Cách này chưa có trong NV.
    Để thêm nó vào hệ thống, bạn hãy mở file mainfile.php, tìm đến:
    MÃ: CHỌN TẤT CẢ
    define( 'NV_ROOTDIR', pathinfo( str_replace( '\\', '/', __file__ ), PATHINFO_DIRNAME ) );

    Thêm xuống dưới:
    MÃ: CHỌN TẤT CẢ
    //Kiem tra trang thai cua may chu, neu > 80 se thong bao "Server too busy. Please try again later"
    require_once ( NV_ROOTDIR . "/includes/getloadavg.php" );


    Thêm xuống dưới:
    MÃ: CHỌN TẤT CẢ
    //Kiem tra trang thai cua may chu, neu > 80 se thong bao "Server too busy. Please try again later"
    require_once ( NV_ROOTDIR . "/includes/getloadavg.php" );



    Tạo file includes/getloadavg.php với nội dung sau:
    <?php

    /**
    * @Project NUKEVIET 3.0
    * @Author VINADES.,JSC (contact@vinades.vn)
    * @Copyright (C) 2011 VINADES.,JSC. All rights reserved
    * @Createdate 12/6/2011, 16:39
    */

    if ( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );

    /**
    * get_server_load()
    *
    * @return
    */
    function get_server_load()
    {
    $disable_functions = ( ini_get( "disable_functions" ) != "" and ini_get( "disable_functions" ) != false ) ? array_map( 'trim', preg_split( "/[\s,]+/", ini_get( "disable_functions" ) ) ) : array();
    $os = strtoupper( ( function_exists( 'php_uname' ) and ! in_array( 'php_uname', $disable_functions ) and strtoupper( php_uname( 's' ) ) != '' ) ? php_uname( 's' ) : PHP_OS );

    if ( strtolower( substr( $os, 0, 3 ) ) === 'win' )
    {
    if ( function_exists( "passthru" ) )
    {
    ob_start();
    passthru( 'typeperf -sc 1 "\processor(_total)\% processor time"', $status );
    $content = ob_get_contents();
    ob_end_clean();
    if ( $status === 0 )
    {
    if ( preg_match( "/\,\"([0-9]+\.[0-9]+)\"/", $content, $load ) )
    {
    return $load[1];
    }
    }
    }

    if ( class_exists( 'COM' ) )
    {
    if ( substr( phpversion(), 0, 1 ) == '4' )
    {
    $wmi = new COM( 'WinMgmts:\\\\.' );
    $cpus = $wmi->InstancesOf( 'Win32_Processor' );
    $cpuload = 0;
    $i = 0;
    while ( $cpu = $cpus->Next() )
    {
    $cpuload += $cpu->LoadPercentage;
    ++$i;
    }

    $cpuload = round( $cpuload / $i, 2 );
    return $cpuload;
    }

    $wmi = new COM( 'WinMgmts:\\\\.' );
    $cpus = $wmi->InstancesOf( 'Win32_Processor' );
    $cpuload = 0;
    $i = 0;
    foreach ( $cpus as $cpu )
    {
    $cpuload += $cpu->LoadPercentage;
    ++$i;
    }

    $cpuload = round( $cpuload / $i, 2 );
    return $cpuload;
    }

    return 'unknown';
    }

    if ( function_exists( "sys_getloadavg" ) )
    {
    $load = sys_getloadavg();
    return $load[0];
    }

    if ( @file_exists( '/proc/loadavg' ) )
    {
    $load = @file_get_contents( '/proc/loadavg' );
    $serverload = explode( ' ', $load );
    $serverload[0] = round( $serverload[0], 4 );
    if ( ! $serverload )
    {
    $load = @exec( 'uptime' );
    $load = split( 'load averages?: ', $load );
    $serverload = explode( ',', $load[1] );
    }
    }
    else
    {
    $load = @exec( 'uptime' );
    $load = split( 'load averages?: ', $load );
    $serverload = explode( ',', $load[1] );
    }

    $returnload = trim( $serverload[0] );
    if ( ! $returnload )
    {
    $returnload = 'unknown';
    }

    return $returnload;
    }

    $load = get_server_load();
    if ( is_float( $load ) and $load > 80 )
    {
    header( 'HTTP/1.1 503 Too busy, try again later' );
    die( 'Server too busy. Please try again later.' );
    }

    ?>
     
    #1 hoduylinh, 26/9/12
    Last edited by a moderator: 26/9/12
    Tags: Không có

Chia sẻ trang này

Users Viewing Thread (Users: 0, Guests: 0)