403Webshell
Server IP : 210.245.233.93  /  Your IP : 216.73.216.226
Web Server : Apache/2.2.15 (CentOS)
System : Linux webserver2.onesolution.com.hk 2.6.32-754.35.1.el6.x86_64 #1 SMP Sat Nov 7 12:42:14 UTC 2020 x86_64
User : apache ( 48)
PHP Version : 5.3.3
Disable Function : exec, shell_exec, system, passthru, popen, proc_open, pcntl_exec
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/hkosl.com/innoutstorage/webadmin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/hkosl.com/innoutstorage/webadmin//function_login_block.php
<?php


	function insert_login_log($user_name, $is_success)
	{
		global $dbh;
		$lb = new LoginBlock;
		$fail_count = $lb->get_fail_count();
		if ($is_success === false) {
			$fail_count++;
		}
		$max_fail_count = $lb->get_max_fail_count();
		$is_block = $fail_count >= $max_fail_count;

		$sql = "
		INSERT INTO sys_login_log (
			create_on, ip_address, user_name, is_success, is_block
		) VALUES (
			NOW(), :ip_address, :user_name, :is_success, :is_block		
		)";

		$sql_param = array(
			':ip_address' => $_SERVER['REMOTE_ADDR'],
			':user_name' => $user_name,
			':is_success' => $is_success === false ? '0' : '1',
			':is_block' => $is_block ? '1' : '0',
		);

		$sth = $dbh->prepare($sql);
		//echo $sth->getSQL( $sql_param ).HTML_EOL;
		if (!$sth->execute( $sql_param )){
			throw new Exception('[' . $sth->errorCode() . ']: '.print_r($sth->errorInfo()));
			exit;
		}


		if($row = $sth->fetch()){
			$loggin = 1;
			return true;
		}
	}

	function die_if_login_block()
	{
		$lb = new LoginBlock;
		$lb->die_if_login_block();
	}

	class LoginBlock
	{
		private $block_mins = 10;
		private $max_fail_count = 5;

		function get_max_fail_count()
		{
			return $this->max_fail_count;
		}

		function get_fail_count()
		{
			global $dbh;
			$block_mins = $this->block_mins;
			$max_fail_count = $this->max_fail_count;

			$sql = "SELECT *
			FROM sys_login_log
			WHERE ip_address = :ip_address AND create_on >= :create_on
			ORDER BY create_on DESC
			LIMIT $max_fail_count";

			$sql_param = array(
				':ip_address' => $_SERVER['REMOTE_ADDR'],
				':create_on' => date('Y-m-d H:i:s', time() - ($block_mins * 60)),// before $block_mins
			);

			$sth = $dbh->prepare($sql);
			//echo $sth->getSQL( $sql_param ).HTML_EOL; //exit;
			if (!$sth->execute( $sql_param )){
				throw new Exception('[' . $sth->errorCode() . ']: '.print_r($sth->errorInfo()));
				exit;
			}

			$login_logs = $sth->fetchAll(PDO::FETCH_ASSOC);

			$fail_count = 0;
			foreach ($login_logs as $login_log) {
				if ($login_log['is_success'] == 1 || $login_log['is_block'] == 1) {
					break;
				} else {
					$fail_count++;
				}
			}
			return $fail_count;
		}

		function die_if_login_block()
		{
			global $dbh;
			$block_mins = $this->block_mins;
			$max_fail_count = $this->max_fail_count;

			$sql = "SELECT
			CASE
				WHEN EXISTS(
					SELECT * FROM sys_login_log
					WHERE ip_address = :ip_address 
						AND create_on >= :create_on 
						AND is_block = 1
				) THEN 1
				ELSE 0
			END AS is_block";

			$sql_param = array(
				':ip_address' => $_SERVER['REMOTE_ADDR'],
				':create_on' => date('Y-m-d H:i:s', time() - ($block_mins * 60)),// before $block_mins
			);

			$sth = $dbh->prepare($sql);
			//echo $sth->getSQL( $sql_param ).HTML_EOL; //exit;
			if (!$sth->execute( $sql_param )){
				throw new Exception('[' . $sth->errorCode() . ']: '.print_r($sth->errorInfo()));
				exit;
			}

			$result = $sth->fetch(PDO::FETCH_ASSOC);

			$is_block = $result['is_block'] == 1;

			if ($is_block) {
				die("You login failure more than $max_fail_count times, please try again after $block_mins mins.");
			}
		}
	}


Youez - 2016 - github.com/yon3zu
LinuXploit