मैं कई क्ष/एक इतने पर सत्र निर्धारण/अपहरण और कई लोगों के जोखिम के बारे में ON
और दूसरों php.ini निर्देशों को php.ini
निर्देशों session.use_only_cookies
की तरह बदलने के लिए सुझाव देते हैं सर्वर बनाने के लिए पढ़ने के लिए अधिक सुरक्षित ...सरल सत्र निर्धारण हमले
मैं अपनी आँखें के साथ देखने के लिए अगर मैं एक साधारण हमले परिदृश्य को दोहराने सकता है चाहता था PHP5 + अपाचे पर आधारित मेरे लोकहोस्ट सर्वर पर।
मेरे स्थानीयहोस्ट session.use_only_cookies
पर OFF
है, इसलिए मेरे स्थानीयहोस्ट के ऊपर/ऊपर के अनुसार मूल रूप से असुरक्षित है, जो मुझे परीक्षण करने की आवश्यकता है।
मैं 1 कैसे एक सत्र निर्धारण हमले perfomed है पर इस सरल लेख पढ़ें:
आदेश आलेख में वर्णित परिदृश्य को दोहराने के लिए में, मैं दो बहुत ही सरल PHP स्क्रिप्ट बनाया (कोड से कम है), लेकिन हमले से काम नहीं करता है, यह मैं क्या किया है:
मैं करने के लिए कहते हैं कि (मैलोरी के रूप में दर्शाना) ऐलिस:
मेरी स्थानीय होस्ट सर्वर के व्यवस्थापक के रूप में मैं सत्र देखा सर्वर डिस्क पर बनाया जा रहा करने के लिए चला गया (ऐलिस होने का नाटक) "हैलो जाएँ http://localhost/login.php?PHPSESSID=mysessionid जाना" (यह एक फ़ाइल के रूप में cerated है
sess_ mysessionid
नाम के साथ), इसलिए मैंने सोचा: अच्छा, यह काम कर रहा है !!!तो मैं में
ऐलिस लॉग क्रेडेंशियल
के रूप में "जो" में प्रवेश करने में लॉग इन किया है और वहinsession_ok.php
पर पुनः निर्देशित है, और इस बिंदु पर (ऊपर विकिपीडिया लेख के अनुसार) (ऐलिस होने का नाटक) मैलोरी चाहिएinsession_ok.php
को भी देखने में सक्षम हो क्योंकि उन्होंने सत्र कोmysessionid
, पर ठीक किया है, लेकिन यह सच नहीं है, क्योंकि जब सर्वर परsess_vdshg238cnfb4vt7ahpnp1p522
पर एक नया सत्र लॉग होता है, तो मुझे इस बात पर समझ में नहीं आता कि मैलोरी को कैसे ठीक किया जाना चाहिए सत्र में हाइजैक, जैसा लेख में बताया गया है ???
login.php
<?php
session_start();
//if user credentials are ok, let's put him in session
if(@$_POST['usr'] === 'joe')
$_SESSION['in_session'] = TRUE;
//if user is already logged in, let's redirect him to the account page "insession_ok.php"
if(isset($_SESSION['in_session']))
{
$webpage = 'http://' . $_SERVER['HTTP_HOST'] . '/insession_ok.php';
header("Location: " . $webpage, TRUE, 302);
}
?>
<form method="POST" action="login.php">
<input name="usr" type="text">
<input type="submit" value="Submit">
</form>
<script type="text/javascript">
alert(document.cookie); //to view cookies
</script>
insession_ok.php
<?php
session_start();
if(@$_SESSION['in_session'] === TRUE)
echo "in session ok";
else //user is not in session cause he did not login, let's redirect him to login page
{
$webpage = 'http://' . $_SERVER['HTTP_HOST'] . '/login.php';
header("Location: " . $webpage, TRUE, 302);
}
?>
कोई सुराग/विचार हमेशा सराहना की जाती है!