Categories
Chia sẻ

Kỹ thuật xác thực HTTP Basic Authentication – tạo và vượt trong php

HTTP Basic Authentication là gì ?

Là một kỹ thuật xác thực nhằm bảo mật cho ứng dụng web trên giao thức http, yêu cầu người dùng cung cấp tên truy vập và mật khẩu khi sử dụng ứng dụng.

Web server thu thập thông tin và danh tính người dùng (username & password) qua một hộp thoại trên browser

Http basic authentication trong php

 

Cài đặt Basic Authentication bằng php

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
   header('WWW-Authenticate: Basic realm="Vui lòng nhập thông tin username và password"');
   header('HTTP/1.0 401 Unauthorized');
   echo 'Text to send if user hits Cancel button';
   exit;
} else {
   $username = $_SERVER['PHP_AUTH_USER'];
   $password = $_SERVER['PHP_AUTH_PW'];
   if($username == 'ten_xac_thuc' && $password == 'mk_xac_thuc') {
      echo 'Đăng nhập ứng dụng thành công';
   }else {
      echo 'username hoặc password không chính xác';
   }
}
?>

 

Cách vượt Basic Authencation bằng php khi bạn đã có username và password

 

Sử dung cUrl

$username = 'ten_xac_thuc';
$password = 'mk_xac_thuc';
$url = 'http://domain.com/_url_chua_basic_authentication';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "{$username}:{$password}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$respone_data = curl_exec($ch);

 

Sử dụng file_get_contents

$username = 'ten_xac_thuc';
$password = 'mk_xac_thuc';
$url = 'http://domain.com/_url_chua_basic_authentication';
$context = stream_context_create(array(
   'http' => array(
      'header' => "Authorization: Basic " . base64_encode("$username:$password")
   )
));
$respone_data = file_get_contents($url, false, $context);

Leave a Reply

Your email address will not be published. Required fields are marked *