ما هي أفضل طريقة لحماية المجلد/الصفحة بكلمة مرور باستخدام PHP بدون قاعدة بيانات أو اسم مستخدم

StackOverflow https://stackoverflow.com/questions/286938

سؤال

ما هي أفضل طريقة لحماية المجلد بكلمة مرور باستخدام PHP بدون قاعدة بيانات أو اسم مستخدم ولكن باستخدام.لدي في الأساس صفحة تدرج جهات الاتصال الخاصة بالمؤسسة وتحتاج إلى حماية هذا المجلد بكلمة مرور دون الحاجة إلى حساب كل مستخدم.كلمة مرور واحدة فقط يتم تغييرها بين الحين والآخر وتوزيعها على المجموعة.أدرك أن الأمر ليس آمنًا للغاية ولكنني أرغب في معرفة كيفية القيام بذلك على الإطلاق.بأفضل طريقة.

سيكون من الجيد أن يتم تذكر كلمة المرور لفترة من الوقت بمجرد قيام المستخدم بإدخالها بشكل صحيح.


أفعل تقريبًا ما اقترحه ديفيد هيجي، باستثناء عدم وجود ملفات تعريف الارتباط.يبدو الأمر غير آمن تمامًا، ولكن من الأفضل أن يكون لديك حماية سيئة بكلمة مرور بدلاً من عدم وجود حماية على الإطلاق.

هذا مخصص للموقع الداخلي حيث سيقضي الأشخاص وقتًا طويلاً في تذكر معلومات تسجيل الدخول وكلمة المرور الخاصة بهم ولن يمروا بها أبدًا اشتراك عملية...ما لم يكن الأمر سهلاً حقًا فلن يستخدموا النظام على الإطلاق.

أردت أن أرى حلول أخرى لهذه المشكلة.

مع قاعدة مستخدمين تتكون من أشخاص ليسوا على دراية كبيرة بالتكنولوجيا، ما هي الطرق الأخرى للقيام بذلك.

هل كانت مفيدة؟

المحلول

يمكنك استخدام شيء مثل هذا:

//access.php

<?php
//put sha1() encrypted password here - example is 'hello'
$password = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d';

session_start();
if (!isset($_SESSION['loggedIn'])) {
    $_SESSION['loggedIn'] = false;
}

if (isset($_POST['password'])) {
    if (sha1($_POST['password']) == $password) {
        $_SESSION['loggedIn'] = true;
    } else {
        die ('Incorrect password');
    }
} 

if (!$_SESSION['loggedIn']): ?>

<html><head><title>Login</title></head>
  <body>
    <p>You need to login</p>
    <form method="post">
      Password: <input type="password" name="password"> <br />
      <input type="submit" name="submit" value="Login">
    </form>
  </body>
</html>

<?php
exit();
endif;
?>

ثم على كل ملف تريد حمايته، ضع في الأعلى:

<?php
require('access.php');
?>
secret text

إنه ليس حلاً لطيفًا للغاية، ولكنه قد يفعل ما تريد

يحرر

يمكنك إضافة صفحة logout.php مثل:

<?php
    session_start();
    $_SESSION['loggedIn'] = false;
?>
You have logged out   

نصائح أخرى

على افتراض أنك على أباتشي:

http://httpd.Apache.org/docs/1.3/howto/htaccess.html#auth

إذا كنت ترغب في تجنب الكوكيز والدورات ولا تريد أن تلعب مع ملفات هتكس، يمكنك أيضا القيام HTTP المصادقة سولي مع PHP:

http://www.php.net/manual/en /features.http-auth.php

ويمكنك بجد رمز كلمة المرور في ملف وتغييره حسب الحاجة، أو إدراجه من ملف لا دليل web_accessible الخاص بك.

والجانب السلبي هو لم يكن لديك القدرة على تنسيق "الدخول" الشاشة - مربع الحوار التحقق من http القياسية أنها ستكون

أشك في ما إذا كان هذا من شأنه أن يعتبر أفضل كان من الصعب القيام بذلك، لكنه سينجح.وبما أن الأمن لا يبدو مشكلة كبيرة بالنسبة لك، فإن حقيقة أن هذه الطريقة غير آمنة مثل الجحيم ربما لن تزعجك أيضًا.

لديك صفحة تسجيل الدخول.php التي تأخذ كلمة المرور ثم تقوم بتعيين ملف تعريف الارتباط إذا كانت تفاصيل تسجيل الدخول صحيحة.يمكن لكل ملف php بعد ذلك التحقق من وجود ملف تعريف الارتباط لتحديد ما إذا كان المستخدم "سجل الدخول" أم لا، وعرض المعلومات وفقًا لذلك.

login.php
...
if(isset($_POST['password']) && $_POST['password'] == 'my_top_secret_word') {
    setcookie('loggedin', 'true', time() + 1200, '/url/');
} else {
    setcookie('loggedin', 'false', time() - 1200, '/url/');
    // display a login form here
}
etc

ستقوم كل صفحة "محمية" بالتحقق من ملف تعريف الارتباط هذا:

if(isset($_COOKIE['loggedin'])) {
    if($_COOKIE['loggedin'] == 'true') {
        $showHidden = true;
    } else {
        $showHidden = false;
    }
} else {
    $showHidden = false;
}

أنا متأكد من أنك حصلت على فكرة (غير آمنة للغاية) ...

وحسنا منذ كنت <م> معرفة انها غير آمنة لتبدأ، هل يمكن تخزين كلمة المرور في ملف نصي في مكان ما على خادم الويب الخاص بك. عندما يصل شخص ما الصفحة التي يمكن أن تظهر بالشكل الذي يسأل عن كلمة السر. إذا كانت كلمة السر مباريات ما هو موجود في ملف نصي، ثم إعادة تحميل الصفحة وعرض المعلومات. وباستخدام ملف نصي يسمح لك بتغيير كلمة المرور دون الحاجة إلى تعديل الصفحة التي تحاول الوصول إليها عندما تريد تغييره. كنت لا تزال جارية لترسل عادي في كل مكان إلا إذا كنت تستخدم SSL. اسمحوا لي أن أعرف إذا كنت بحاجة الى بعض التعليمات البرمجية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top