Можно ли хранить пароль в виде обычного текста в переменной php или в константе php?

Чтобы выбрать строки, значение столбца которых равно скаляру, some_value, используйте ==:

df.loc[df['column_name'] == some_value]

Чтобы выбрать строки, значение столбца которых в итерабельном, some_values, используйте isin:

df.loc[df['column_name'].isin(some_values)]

Объединить несколько условий с &:

df.loc[(df['column_name'] == some_value) & df['other_column'].isin(some_values)]

Выбрать строки, значение столбца не равно some_value, используйте !=:

df.loc[df['column_name'] != some_value]

isin возвращает булевскую серию, поэтому для выбора строк, значение которых не в some_values, отмените булевскую серию используя ~:

df.loc[~df['column_name'].isin(some_values)]

Например,

import pandas as pd
import numpy as np
df = pd.DataFrame({'A': 'foo bar foo bar foo bar foo foo'.split(),
                   'B': 'one one two three two two one three'.split(),
                   'C': np.arange(8), 'D': np.arange(8) * 2})
print(df)
#      A      B  C   D
# 0  foo    one  0   0
# 1  bar    one  1   2
# 2  foo    two  2   4
# 3  bar  three  3   6
# 4  foo    two  4   8
# 5  bar    two  5  10
# 6  foo    one  6  12
# 7  foo  three  7  14

print(df.loc[df['A'] == 'foo'])

дает

     A      B  C   D
0  foo    one  0   0
2  foo    two  2   4
4  foo    two  4   8
6  foo    one  6  12
7  foo  three  7  14

Если у вас несколько значений вы хотите включить, поместить их в список (или, в более общем плане, любой итерабельный) и использовать isin:

print(df.loc[df['B'].isin(['one','three'])])

дает

     A      B  C   D
0  foo    one  0   0
1  bar    one  1   2
3  bar  three  3   6
6  foo    one  6  12
7  foo  three  7  14

Примечание, однако, если вы хотите сделать это много раз, более эффективно сначала сделать индекс, а затем использовать df.loc:

df = df.set_index(['B'])
print(df.loc['one'])

дает

       A  C   D
B              
one  foo  0   0
one  bar  1   2
one  foo  6  12

или, чтобы включить несколько значений из использования индекса df.index.isin:

df.loc[df.index.isin(['one','two'])]

дает

       A  C   D
B              
one  foo  0   0
one  bar  1   2
two  foo  2   4
two  foo  4   8
two  bar  5  10
one  foo  6  12
29
задан Hao Wooi Lim 7 May 2009 в 09:12
поделиться

8 ответов

Короткий ответ - оба нет, и Он Зависит.

Это почти никогда не хорошая идея сохранить пароли в простом тексте, особенно в веб-доступном месте, если для [1 111] никакой другая причина, чем простая неверная конфигурация сервера или эхо в неправильном месте могла выставить его миру.

, Если НЕОБХОДИМО сохранить пароль, (который возможен) Вы могли попытаться сохранить его вне webroot, например, /var/www/public_html/ Помещенный Ваши коды здесь
/var/www/includes/ Помещенный, Ваши пароли здесь

Еще лучше, чем это будут состоять в том, чтобы иметь систему, что Вам нужен пароль для (например, обертка базы данных) возвращают объект, который уже инстанцируют. так вместо того, чтобы просить $databasepassword Вы просите объект PDO и храните свои классы базы данных вне webroot.

Это Зависит, прибывает из того, какие векторы атаки заставили бы кого-то иметь доступ к тому тексту пароля, и будет это требовать, чтобы они уже были в Вашей файловой системе, если так, Вы, вероятно, завинчены так или иначе.

кроме того, если это - пароль к Вашему supa-secrit содержанию подписчика, meh, все, которое Вы проиграли, некоторая абонентская плата, если его Ваша база данных, у Вас может быть проблема, если это - Ваши детали онлайна - банкинга, гм хорошие для Вас.

то, Насколько ценный действительно ли вещью является пароль, защищает?

34
ответ дан garrow 7 May 2009 в 20:12
поделиться
  • 1
    То же для меня. Решения с индексом, работавшим только " haflish". там, где все еще элементы, скрытые позади фона. Это решение с перемещением модальной внешней стороны тело работало отлично. Спасибо! – Recek 17 February 2017 в 20:31

В зависимости от того, как Вы определяете безопасный, любой подход имеет свои положительные и отрицательные аспекты.

, Если Вы действительно хотите сохранить пароль в своем источнике, это могла бы быть хорошая идея сделать что-то вроде этого:

Файл: файл config.php

if( ! defined('IN_CODE') ) die( 'Hacking attempt' );

define( 'PASSWORD_HASH', '098f6bcd4621d373cade4e832627b4f6' );

: простой текст index.php

define( 'IN_CODE', '1' );

include( 'passwd.php' );

if( md5($password) == PASSWORD_HASH )
...

никогда не является хорошей идеей, всегда храните хеш пароля, который Вы хотите сохранить.

, Кроме того, попытайтесь отделиться, определяет как это от Вашего основного исходного файла.

9
ответ дан Yannick Motton 7 May 2009 в 20:12
поделиться

Если сам сайт не поставлен под угрозу, и теперь так все вещи, к которым те пароли предоставляют доступ (Ваш DB, возможно?).

0
ответ дан Lawrence Dol 7 May 2009 в 20:12
поделиться

Обычно они не видят его. Но если что-то плохо происходит на сервере существует большая возможность, что сервер возвратит Ваш код php в простом тексте w/o выполнение его, и поэтому пользователь будет видеть весь источник того файла и также Вашего пароля.

Я сохранил бы пароль где-нибудь, где это не находится на корне документа (Не может быть открыто в браузере), и затем откройте тот файл с php и считайте содержание (пароль). Или если бы у Вас есть несколько паролей/пользователей, я сохранил бы их в базе данных для быстрого доступа.

Если Вы хотите использовать расположение каталога метода файла, должен выглядеть примерно так (depneds на сервере)

/public_html/index.php

/password.txt

$myFile = $_SERVER['DOCUMENT_ROOT'] + "/../password.txt";
if file_exists($myFile) { 
   $fh = fopen($myFile, 'r');
   $password = fgets($fh);
   fclose($fh);
} else die("No password file");
if ($user_input == $password) {
   ...... Authentication succeeded ..........
   ......your relatively protected code .....
} else die("Wrong password");

Если Вы хотите еще больше безопасности вместо того, чтобы хранить пароль как текст в том текстовом файле. Рана это - хеш и затем когда Вы хотите сравнить его с вводом данных пользователем, генерирует хеш от ввода данных пользователем и сравнивает его с хешем пароля, который Вы загрузили из текстового файла

sha1($user_input) == $password_from_txt
7
ответ дан Maiku Mori 7 May 2009 в 20:12
поделиться

Пока Ваша установка PHP работает, как она должна, это не быть менее безопасной, чем какой-либо другой метод. Я предпочел бы, чтобы названная константа (определила) по переменной. Дополнительно Вы могли бы рассмотреть хранение хеша пароля вместо простого пароля. Это предотвращает кражу Ваших паролей, даже если сайт поставлен под угрозу.

Что касается того, чтобы быть плохой практикой, это зависит. Если необходимо сохранить всего один пароль, этот подход в порядке. Хранение их вне корня документа может дать ложное чувство дополнительной безопасности; корень документа является не более абсолютным, чем какая-либо другая установка сервера.

2
ответ дан Joonas Pulakka 7 May 2009 в 20:12
поделиться
  • 1
    Это работало на меня также.... Большое спасибо.. Вы сохранили мой день! – Sanal Varghese 24 July 2015 в 22:54

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

0
ответ дан Thomaschaaf 7 May 2009 в 20:12
поделиться
  • 1
    Я не вижу project.properties файл в C:\AppData\Local\Android\sdk\extras\android\m2repository\com\android\support\appcompat-v7. Все, что я вижу, является списком папок для каждой версии SDK, 18.00, 19.00, 19.0.2, 19.1.0, и т.д. – savi 20 February 2016 в 08:03

Это зависит, как Вы определяете 'безопасный'.

Вы правы в этом, обычный пользователь не будет видеть его.

Однако это - определенно плохая практика; если Ваш сайт поставлен под угрозу, к чему еще эти пароли предоставят доступ? Я сказал бы как минимум, что необходимо хранить хеш пароля, не простой текст.

0
ответ дан DanSingerman 7 May 2009 в 20:12
поделиться
  • 1
    Вся фабрика cookie! И большой мешок dogsh*t отправляет к Google. – Olof Hedman 21 September 2015 в 22:38

Я полагаю, что в большинстве случаев простой текстовый пароль будет паролем базы данных, поскольку MySQL, например, не принимает хэш для аутентификации.

Как упоминалось ранее, лучшим решением является сохранение PHP config с паролем вне корневого веб-узла.

Если вас беспокоит, что кто-то может увидеть ваш пароль при просмотре файла, вы можете просто сделать его нечитаемым для человека с помощью функции base64.

См. этот пост для получения подробной информации и даже небольшой утилиты для Windows, Linux и Mac, которая упрощает задачу.

0
ответ дан 28 November 2019 в 01:34
поделиться
Другие вопросы по тегам:

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