image

PHP somo la 80: Authentication header

Katika somo hili utakwenda kujifunza kuhusu Authentication header, najinsi ya kutuma taarifa hizo na kuzisoma

Authentication header

Hii ni header ambayo ina kazi ya ya kuweka utambulisho kwenye hiyo request. Yenyewe hutumika kuthibitisha uhalali wa mtumiaji kama anastahiki kfanya hiyo request. Hivyo inaweza kumzuia ama kumruhusu. Mfano kutuma jina la mtumiaji na password kwa ajili ya ku login na vitu vingine. Ama kuthibitisha session. Pia hii inaweza kutumika kutuma authentication token kwenye server.

 

Ni ipi kazi kuu ya authentication header?

Kazi kuu ya authentication header ni kuhakikisha kuwa taarifa haibadilishwi wakati inapotumwa kutoka kwa cliect kwenda kwa server ama kutoka kwa server kwenda kwa client. Hii huboresha usalama kwani hacker anaweza kubadili taarifa hizi kama hazitakuwa salama na kuweza kusababisha hasara.

 

Ili kufanya authentication header kuna hatuwa tatu zinapitiwa:-

 

  1. Kufanya encoding ya data husika.

Encoding ni kubadilidata kutoka hali ya kawaida na kuwa katika hali nyingine ambayo binadamu hawezi kuisoma hiyo data. Na kuzirudisha kunatumika decoding.

 

Encoding inayotumiwa hapa ni base64. Ambapo tunatumia functio hii base64_encode() ndan yake tunaweka hizo data. Kama data ni nyingi utazitenganisha kwa alama ya coloni yaani zile nukta pacha (:).

Mfano

Tunataka ku encode jina na password. Tuseme jina ni Bongoclass na password ni BCG123. Hivyo data zitakuwa hivi:

 

<?php

$username = 'Bongo';

$password = 'BCG123';

$auth = base64_encode("$username:$password");

 

//jarbu uprnt output taupa uZ286QkNHMTIz

echo $auth;

 

Sasa utaona hapo ama uta output hzo encoded data utapata Qm9uZ286QkNHMTIz ambapo h n data ambayo po encoded. Na utaa u decode utatuma base64_decode()

Mfano:

 

<?php

$encoded_data = "Qm9uZ286QkNHMTIz";

echo base64_decode($encoded_data);

 

Itakupa Bongo:BCG123

 

  1. Utengeneza context data

Hapa tunawenda uandaa fungu cha data wa ajili ya kutumiwa kwenda kwenye server.

 

Kwanza data zetu tutaziweka kwenye array. Katika array yetu tatukwenda kuweka header na method. Method ninamanisha method ambazo hutumika kusend request. Kama vile get na post. Kisha tutatukwa na header ambayo itakuwani authorization basic

 

Aina ya array tutakayotumia ni associative array ambayo nakuwa na keys. 

Mafano:

$header_data = array(

   'http' => array(

       'method'  => 'GET',

       'header'  => "Authorization: Basic $auth\r\n"

   )

);

 

Utaona hapo method ni GET na aina ya Authorization ni Basic ni ya kawaida tu kwa ajili ya kufanya authentication.

 

Baada ya kuziweka data zetu kwenye array hatuwa inatofuata ni kutengeneza context data kwa ajili ya kutuma kwenda kwenye server. Tutatumia function ya stream_context_create() ili kutuma data

 

Context data ni nini?

Hizi ni mkusanyiko wa data kama aramenta na taarifa nyinginezo ambazo hujitajika wakati wa kuwasiliana na server. Huweza kutengenezwa kwa kutumia function hiyo nilioitaja hapo juu na hutumia associative array..Zenyewe zinakuwa zinabeba taarifa kuhusu huo mkondo wa data kama tabia na seting nyinginezo. Kama tulivyoweka hapo juu metod na header information.

Mfano:

<?php

$username = 'Bongo';

$password = 'BCG123';

$auth = base64_encode("$username:$password");

 

$header_data = array(

   'http' => array(

       'method'  => 'GET',

       'header'  => "Authorization: Basic $auth\r\n"

   )

);

$context = stream_context_create($header_data);

?>

 

Sasa mpaa ufa hapo tutauwa tumeshatuma hzo taarfa wenda wenye server. Wa upande wa server anapotuna response ss tunaweza utuma function ya fle_get_contents() tutakuja kujifunza kwenye somo la API



Pia tunaweza kutuma data hizo kwa kutumia curl

$username = "Bongo";

$password = "BCG123";

$auth = base64_encode("$username:$password");

 

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "https://api.example.com/data");

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_HTTPHEADER, array(

   "Authorization: Basic $auth"

));

 

$response = curl_exec($curl);

curl_close($curl);

?>

 

Tutakuja kujifunza vizuri kuhusu curl kwenye somo la API

 

Unaweza uchanganya taafifa za aina mbalimbali kwenye context data zako. Angali mfano hapo chini:

<?php

$context_data = array(

   'http' => array(

       'method'  => 'POST', // HTTP method

       'header'  => "Authorization: Bearer YOUR_ACCESS_TOKEN\r\n" .

           "Content-Type: application/json\r\n",

       'content' => json_encode(array('key1' => 'value1', 'key2' => 'value2')), // POST data

       'timeout' => 30 // Timeout in seconds

   ),

   'ssl' => array(

       'verify_peer' => true,

       'verify_peer_name' => true,

       'cafile' => '/path/to/cacert.pem' // Path to Certificate Authority file

   )

);

 

// Create the context resource

$context = stream_context_create($context_data);

 

?>

 

Kwa upande wa server:

Sasa kwa upande wa server tunaweza kusoma hizo data zilizotumwa kwa kutumia server variable mfabo

Upata username tutatuma $_SERVER['PHP_AUTH_USER']; na upata password tutatuma $_SERVER['PHP_AUTH_PW']; 

 

Pia ili kuangalia kama mtumiaji yupo authenticated tutatumia isset()

Mfano:

<?php

// Check if the user has provided credentials

if (!isset($_SERVER['PHP_AUTH_USER'])) {

   // If not, send a 401 Unauthorized response and the WWW-Authenticate header

   header('HTTP/1.1 401 Unauthorized');

   header('WWW-Authenticate: Basic realm="My Realm"');

   echo 'Authentication required.';

   exit;

} else {

   // Validate the provided credentials

   $username = $_SERVER['PHP_AUTH_USER'];

   $password = $_SERVER['PHP_AUTH_PW'];

 

   // Example credentials for validation

   $valid_username = 'admin';

   $valid_password = 'password';

 

   if ($username === $valid_username && $password === $valid_password) {

       echo 'You are authenticated!';

   } ">...



Kama unahitaji kuuliza maswali Bofya hapa





           

Je! umeipenda hii post?
Ndio            Hapana            Save post

Rajabu Tarehe 2024-08-04 19:46:00 Topic: PHP Main: Masomo File: Download PDF     Share On Facebook or Whatsapp Imesomwa mara 159


Sponsored links
👉1 Madrasa kiganjani     👉2 Sira ya Mtume Muhammad (s.a.w)     👉3 Kitau cha Fiqh     👉4 Simulizi za Hadithi Audio     👉5 Kitabu cha Afya     👉6 kitabu cha Simulizi    

Post zifazofanana:-

PHP somo la 75: Content-Type Header
Katika somo hili utakwenda kujifunza kuhusu content-type header. Soma Zaidi...

PHP BLOG - somo la 7: Jinsi ya kutengeneza ukurasa wa kusoma post kwenye blog
HApa utakwenda kujifunza sasa namna ya kuzisoma post kutoka kwenye blog Soma Zaidi...

PHP - somo la 29: Jinsi ya kaundika function kwenye php
Katika somo hili utakwenda kujifundisha kuhus matumizi ya function kwenye php. Pia utajifunza jinsi ya kuandika function Soma Zaidi...

PHP - somo la 42: Jinsi ya kufanya encryption na de cryption kwa kutumia PHP
Katika somo hili utakwenda kujifunza jinsi ya kufanya encryption na decryption kwa kutumia PHP. hii itakusaidia kuongeza usalama kwenye taarifa za watu Soma Zaidi...

PHP somo la 54: PHP OOP class constant
Katika somo hili utakwenda kujifunza jinsi ya kutumia constatnt kwenye class. Soma Zaidi...

PHP - somo la 38: Jinsi ya ku upload mafaili zaidi ya moja kwa kutumia PHP
katika somo hili utajifunza jinsi ya ku upload multiple file yaani mafaili mengi kwa wakati mmoja kwa kutumia PHP Soma Zaidi...

PHP - somo la 18: Jinsi ya kusoma data kutoka kwenye database kwa kutumia PHP
Katika somo hili utakwenda kujifunza jinsi ya kusoma data kutoka kwenye database kwa kutumia PHP. Soma Zaidi...

PHP - somo la 34: Jinsi ya kutumia do loop, while loop na foreach kwenye PHP
Katika somo hili utakwenda kujifunza kuhusu aina za loop DO, FOR, FOREACH LOOPS kwenye PHP Soma Zaidi...

PHP somo la 73: Maana ya http header
Katika somo hili utakwenda kujifunza kuhusu http header, maana yake na jinsi ya kusoma taarifa zilizopo kwenye http header. Soma Zaidi...

PHP somo la 85: Jinsi ya utengeneza json data kwa utumia php
Katika somo hili utakwenda kujifunza Jinsi ya utengeneza json data kwa utumia php Soma Zaidi...

PHP - somo la 48: Jinsi ya kuzuia hacking kwenye sytem ya kujisajili na ku login
Katika somo hili utajifunza jinsi ambavyo utaweza kutengeneza mfumo wa kuisajiki na ku login, kisha kuangalia usalama wa mfumo kwa kuzuia sql injection. Soma Zaidi...

PHP somo la 76: Aina za cache header
Katika somo hili utakwenda kujifunza kuhusu Aina za cache header Soma Zaidi...