为什么我在不使用php cURL发送用户名和密码的情况下访问管理面板

时间:2018-04-07 14:14:27

标签: php session login-script php-curl

我已经为实验制作了一个基本登录表单,并尝试使用cURL登录。我正在使用php。我确保没有人可以在没有登录(身份验证)的情况下进入主 index.php 页面。但是现在当我尝试使用cURL访问时,我得到了它。我认为我的登录和会话处理代码存在问题。我尽我所能,但没有得到任何解决方案。请帮助解决这个问题。

提前致谢。

1。这是会话处理代码驻留在 session.php

<?php
class session{
    public static function init(){
        session_start();
    }
    public static function set($key,$value){
        $_SESSION[$key] = $value;
    }
    public static function get($key){
        if (isset($_SESSION[$key])) {
            return $_SESSION[$key];
        }
        else{
            return false;
        }
    }
    public static function cheaksession(){
        self::init();
        if(self::get("login") == false){
            self::destroy();
            header("Location: login.php");
        }
    }
    public static function destroy(){
        session_destroy();
    }
}

&GT;

2。这是登录表单代码驻留在 login.php

<?php 
include "lib/session.php"; 
session::init();
?>
<?php include "lib/Database.php"; ?>
<?php include "helpers/format.php"; ?>
<?php 
  $db = new Database();
  $fm = new format();
?>
<?php  

    $err = 0;
    if ($_SERVER['REQUEST_METHOD'] == 'POST' ) {
      $username = $fm->validation($_POST['username']);
      $password = $fm->validation($_POST['password']);

      $username = mysqli_real_escape_string($db->link,$username);
      $password = mysqli_real_escape_string($db->link,$password);

            if($username == 'fahad' && $password == '1234') {
                  session::set("login",true);
          session::set("username",$username);
          session::set("userId",1);
          header("Location: index.php");
            }
      else{
            $err = 1;
      }

    }
?>

第3。这是会话检查的主页代码驻留在 index.php

<?php 
      include "lib/session.php"; 
            session::cheaksession();
?>

4。这是cURL攻击代码

<?php

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,'http://localhost/Hackalgo/DummySite/index.php');

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_exec($ch);

    curl_close($ch);
?>

通过执行此脚本,我正在抓取上面(3)中提到的 index.php 的html页面。但是在 index.php (3)中有一个会话检查器方法,它应该强迫我进入登录页面 login.php 在(2)中提到。但它不起作用,并且在登录页面(2)中没有任何身份验证的情况下爬网 index.php (3)。

1 个答案:

答案 0 :(得分:1)

  1. curl默认不遵循重定向。
  2. 在cheaksession电话之后没有任何东西阻止PHP执行。
  3. 发送位置标题后调用exit()或左键。