If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
Cross-Site Request Forgery (CSRF) एक ऐसा web vulnerability है जिसमे attacker किसी user को बिना उसके जाने, एक unwanted request भेजने पर मजबूर करता है। ये vulnerability attacker को user के credentials के through unintentional actions करने का chance देती है, जैसे कि fund transfer, account changes, या फिर sensitive information leakage.
इस blog में हम समझेंगे कि CSRF attack क्या होता है, कैसे होता है, और PHP में CSRF attacks से बचने के लिए आप क्या कर सकते हैं, detail में समझेंगे।
●●●
CSRF attack में एक legitimate user को उनकी authentication के साथ एक unauthorized action perform करने के लिए force किया जाता है। Attacker user कि authentication token का misuse करके उनके behalf पर requests send करता है।
For Example -
Imagine कीजिये कि आप एक online banking site पर logged इन हैं , अगर एक attacker आपको एक malicious link
या form के through कुछ ऐसा action perform करवाता है जिसमे आपके session के through आपकी details use हो रही हैं, तो यह एक CSRF attack होगा।
Step 1 : Victim को Login करवाया जाता है - User अपने banking या किसी और web application पर login करता है और session cookie उसके browser में store हो जाती है।
Step 2 : Malicious Link/Request - Attacker victim को एक crafted email या malicious link के through उस request को trigger करने के लिए मजबूर करता है , Victim को यह नहीं पता होता कि वो किस चीज़ को click कर रहा है।
Step 3 : Unauthorized Request - जब victim वो link या form submit करता है, तो unauthorized request victim के session के through perform हो जाता है, जिससे attacker उनका data misuse कर सकता है।
●●●
CSRF attacks से बचने के लिए कुछ standard techniques use कि जाती हैं, जैसे CSRF tokens, SameSite cookies, और HTTP headers. चलिए इनको detail में देखते हैं।
CSRF token एक unique random string होता है जो हर form submission के साथ generate होता है और server-side पर validate किया जाता है। अगर token match नहीं करता, तो request reject कर दिया जाता है।
यह token typically hidden input field के through pass किया जाता है।
Example
Step 1 : Token Generate करना और Form में Include करना -
session_start();
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?>
<form method="POST" action="process_form.php">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
<!-- Form Fields Here -->
<button type="submit">Submit</button>
</form>
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
die('CSRF token mismatch');
}
// Process form data here
}
bin2hex(random_bytes(32))
एक secure random token generate करता है।
Token को session में store किया जाता है और form के hidden field
के through pass किया जाता है।
Form submit hone के बाद, server-side पर token को validate
किया जाता है. अगर token match नहीं करता, तो request reject कर दिया जाता है।
●●●
Same Site attribute cookies में set किया जाता है जिससे cross-site request
में cookies send नहीं होती , यह attribute CSRF attacks को mitigate करने में काफी helpful होता है।
setcookie('session', 'value', ['samesite' => 'Strict', 'secure' => true, 'httponly' => true]);
SameSite=Strict:
इस attribute के साथ cookie सिर्फ same origin से ही send होगी. Cross-site requests के लिए cookie नहीं send होगी, जो CSRF attacks से बचाता है।
●●●
Referer header को check करना एक additional security layer provide कर सकता है , यह check करता है कि request same origin
से आ रही है या नहीं।
अगर referer header mismatch करता है, तो request को reject किया जाता है।
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$referer = $_SERVER['HTTP_REFERER'];
if ($referer !== 'https://example.com/form_page') {
die('Invalid referer');
}
// Process form data here
}
Referer header ensure करता है कि request trusted source से आ रही है।
●●●
Imagine कीजिये कि एक social media website है जिसमे users अपना email
update कर सकते हैं। अगर email update form CSRF token use नहीं करता है, तो एक attacker victim को email update request के लिए force कर सकता है बिना उसके knowledge के।
Attacker एक malicious link send सकता है जो victim के browser में execute होते ही, उसके email address को attacker के desired email address से replace कर देगा।
इस scenario में CSRF token implement करने से आप इस vulnerability को prevent कर सकते हैं।
Cross-Site Request Forgery (CSRF) एक dangerous vulnerability है जो काफी severe consequences ला सकती है अगर इसको properly handle नहीं किया जाये।
Always remember, web security एक ongoing process है, और आपको हमेशा best security practices follow करने चाहिए ताकि आपके users और आपकी application safe रहे।
●●●
Loading ...