Что лучший способ к паролю, защищают папку/страница с помощью php без дб или имени пользователя

Спасибо за ответы! Я бы сказал, что @Nan Yu, вероятно, получил ответ, который оказался ближе всего к решению, которое я придумал, но я решил, что поделюсь тем, что в итоге получилось, в методе Configure () моего файла Startup.cs .

using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.IdentityModel.Protocols.OpenIdConnect;
...
var openidOptions = new OpenIdConnectOptions(authenticationScheme)
{
    ClientSecret = secret,
    AutomaticAuthenticate = true,
    SignInScheme = "Identity.External",
    Authority = identityServerAddress,
    ClientId = clientId,
    RequireHttpsMetadata = true,
    ResponseType = OpenIdConnectResponseType.CodeIdToken,
    AutomaticChallenge= true,
    GetClaimsFromUserInfoEndpoint = true,
    SaveTokens = true,
    Events = new OpenIdConnectEvents
    {
        OnRemoteSignOut = async remoteSignOutContext =>
        {
            remoteSignOutContext.HttpContext.Session.Clear();
        },
    },
};
openidOptions.Scope.Clear();
openidOptions.Scope.Add("openid");
app.UseOpenIdConnectAuthentication(openidOptions);

Добавление этого к моему клиенту .NET Framework 4.6 позволило мне успешно установить связь с моим .NET Core 2.0 Identity Server! Я ценю всех, кто пытался помочь :)

21
задан Bill the Lizard 28 August 2011 в 03:21
поделиться

5 ответов

Вы могли использовать что-то вроде этого:

//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   
64
ответ дан 29 November 2019 в 06:20
поделиться

Принятие Вы находитесь на Apache:

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

8
ответ дан 29 November 2019 в 06:20
поделиться

Если Вы хотите избежать cookie, сессий и не хотите играть с .htaccess файлами, можно также сделать аутентификацию HTTP soley с PHP:

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

Можно трудно кодировать пароль в файл и изменить его по мере необходимости или включать его из файла не в web_accessible каталоге.

Оборотная сторона - Вы, не имеют способности отформатировать экран "входа в систему" - это будет стандартное диалоговое окно аутентификации HTTP

4
ответ дан 29 November 2019 в 06:20
поделиться

Я сомневаюсь, рассчитало ли это как лучший wasy выполнения его, но это работало бы. И так как безопасность, кажется, не большая проблема для Вас, то, что этот путь, столь небезопасный, как ад, вероятно, не побеспокоит Вас также.

Имейте login.php страницу, которая берет пароль и затем устанавливает cookie, если данные для входа в систему корректны. Каждый php файл может затем проверить на существование cookie, чтобы определить, "зарегистрирован" ли пользователь или нет, и информация о дисплее соответственно.

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

каждая "защищенная" страница затем проверила бы на этот cookie:

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

Я уверен, что Вы получаете (очень небезопасную) идею...

1
ответ дан 29 November 2019 в 06:20
поделиться

Хорошо, так как Вы знаете, что это небезопасно для начала, Вы могли сохранить пароль в текстовом файле где-нибудь на Вашем веб-сервере. Когда кто-то получает доступ к странице, Вы могли показать форму, которая просит пароль. Если пароль соответствует тому, что находится в текстовом файле, то Вы перезагружаете страницу и отображаете информацию. Используя текстовый файл позволит Вам изменять пароль, не имея необходимость изменять страницу, к которой они получают доступ, когда Вы хотите изменить его. Вы все еще собираетесь быть передающим простым текстом везде, если Вы не используете SSL. Сообщите мне, нужен ли Вам некоторый код.

-2
ответ дан 29 November 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: