Как скрыть / защитить данные пароля в php?

Я создаю веб-сайт, на котором я пытаюсь создать форму, которая будет отправлять пользовательский ввод в электронную таблицу Google в моих документах / диске Google ... Я нашел проект Github, который позволяет людям кодировать php ... Он включает 2 других файла php, которые необходимы для скрипта. Код выглядит следующим образом:

У меня вопрос, как я могу скрыть свой пароль от этого скрипта в $ u = / $ p = ?? Любой, кто просматривает код, может увидеть мой пароль .. как я могу это предотвратить?

Ссылка на источник скрипта: http://www.farinspace.com/saving-form-data-to-google-spreadsheets/

<?php

// Zend library include path
set_include_path(get_include_path() . PATH_SEPARATOR . "$_SERVER[DOCUMENT_ROOT]/ZendGdata-1.8.1/library");

include_once("Google_Spreadsheet.php");

$u = "[email protected]";
$p = "password";

$ss = new Google_Spreadsheet($u,$p);
$ss->useSpreadsheet("My Spreadsheet");
$ss->useWorksheet("wks2");

// important:
// adding a leading alpha char prevents errors, there are issues 
// when trying to lookup an identifier in a column where the 
// value starts with both alpha and numeric characters, using a
// leading alpha character causes the column and its values to be 
// seen as a strictly a strings/text

$id = "z" . md5(microtime(true));

$row = array
(
    "id" => $id // used for later lookups
    , "name" => "John Doe"
    , "email" => "[email protected]"
    , "comments" => "Hello world"
);

if ($ss->addRow($row)) echo "Form data successfully stored";
else echo "Error, unable to store data";

$row = array
(
    "name" => "John Q Doe"
);

if ($ss->updateRow($row,"id=".$id)) echo "Form data successfully updated";
else echo "Error, unable to update spreadsheet data";

?>

person mk117    schedule 10.06.2013    source источник
comment
Должен быть пользователь с доступом к вашему файлу. Таким образом, ваш пароль будет читаемым. Как насчет того, чтобы никому не делиться этим пользователем или не делиться своим сервером с кем-либо?   -  person BLaZuRE    schedule 10.06.2013
comment
Почему / как кто-нибудь мог прочитать код? Если это должно быть безопасно, не вставляйте пароли в коды - это так просто.   -  person h2ooooooo    schedule 10.06.2013
comment
@BLaZuRE: Что вы имеете в виду под доступом к пользователю? Таблица будет сохранена в «моей» учетной записи Google docs, так что не должен ли пароль учетной записи быть паролем моей учетной записи? Или я могу создать фиктивного пользователя и в google docs? Как личности в почте Yahoo?   -  person mk117    schedule 10.06.2013


Ответы (3)


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

Запустите этот скрипт, используя исходный пароль

<?php
$password = "test";

echo "Original Password In Plain Text = $password\n";
$len=strlen($password);

$NewPassword = "";
for( $i = 0; $i <= $len-1; $i++ ) {
$charcode = ord(substr( $password, $i, 1 ));
$NewChar = $charcode+5; $NewLetter = chr($NewChar);
$NewPassword = $NewPassword . $NewLetter;
} echo "Modified Password to Use in Script = $NewPassword\n";

$OrigPassword = "";
for( $i = 0; $i <= $len-1; $i++ ) {
$charcode = ord(substr( $NewPassword, $i, 1 ));
$OrigChar = $charcode-5; $OrigLetter = chr($OrigChar);
$OrigPassword = $OrigPassword . $OrigLetter;
} echo "Convert the Modified back to the Original = $OrigPassword\n";

?>

Добавьте эту часть в свой сценарий с новым паролем из приведенного выше сценария.

$password = "yjxy";
$OrigPassword = "";
for( $i = 0; $i <= $len-1; $i++ ) {
$charcode = ord(substr( $password, $i, 1 ));
$OrigChar = $charcode-5; $OrigLetter = chr($OrigChar);
$OrigPassword = $OrigPassword . $OrigLetter;
} $password = $OrigPassword;
echo "Script thinks this is the password = $password\n";

person Larry Vennard    schedule 09.12.2014
comment
Спасибо! Есть ли какая-нибудь функция PHP, которая также может кодировать строку пароля в md5 или sha? Я где-то читал в Интернете, что PHP поддерживает дешифрование строк в эти два формата .... - person mk117; 09.12.2014
comment
Похоже, они это сделали здесь ссылка, но у меня это не сработало, мой php5-mcrypt не работал мне почему-то нравится. они дают советы по его устранению здесь ссылка Это сработало, затем Я запустил сценарий md5, и он отлично сработал! - person Larry Vennard; 10.12.2014
comment
Что ж, я нашел в Интернете веб-сайт, который конвертирует строку в md5 и обратно в строку! Вот ссылка - person mk117; 11.12.2014

Лучший способ скрыть пароль - сохранить его во внешнем файле, а затем включить в свой php-скрипт. Ваш файл с этим паролем, скажем, "config.php" должен быть выше DOCUMENT_ROOT, чтобы сделать его недоступным через браузер. Это распространенный подход, и, например, вы можете увидеть его в структуре каталогов Zend Framework, где пользователю виден только «общедоступный» каталог. Для этого файла также должен быть установлен правильный CHMOD.

По этой ссылке у вас есть структура каталогов ZF, где вы можете проверьте расположение файлов конфигурации.

person Robert    schedule 10.06.2013
comment
так что я должен включить его через: 'include (config.php);' команда? Если да, то каким может быть код для файла config.php ?? - person mk117; 10.06.2013
comment
просто ‹? php $ pass = 'your pass';?› Когда кто-то захочет получить к нему доступ из Интернета, он будет невидим для него. Как я уже писал, лучшее решение - переместить этот файл выше корня документа. - person Robert; 10.06.2013
comment
В порядке! Спасибо! Теперь я понял .. также, под корнем документа вы имеете в виду ТОЛЬКО ПОСЛЕ '‹? Php' ??? т.е. строка сразу после ‹? php должна быть include (config.php); ? - person mk117; 10.06.2013
comment
Проверьте структуру каталогов, которую я вам дал. Допустим, ваше приложение отображается в /user/ ваша страница отображается в /user/public/index.php htaccess предоставляет доступ к общедоступному / и связывает домен для этого каталога, но конфигурации находятся в /user/config/config.php, поэтому пользователь не может получить доступ через браузер, но ваши сценарии могут - person Robert; 10.06.2013
comment
в порядке. Спасибо! в этом есть смысл, но мне нужно будет проверить ссылку на эту страницу в каталоге ZF ... - person mk117; 10.06.2013
comment
Привет! Не могли бы вы предоставить простой код того, как использовать php выше в форме html? Как закодировать для него html? - person mk117; 11.06.2013
comment
что ты имеешь в виду? Я не понимаю - person Robert; 11.06.2013
comment
Я имею в виду, как получить ввод на странице html, чтобы использовать скрипт php для публикации в электронной таблице Google? farinspace.com/saving-form-data-to-google-spreadsheets эта страница просто показывает скрипт php, нет демонстрации того, как реализовать код? Это должен быть вспомогательный класс ... и я не знаю, для чего нужны вспомогательные классы и как их использовать? .......................... Nevermind .. Я нашел учебник через google: itinsider.tumblr.com/post/43775704791/ .. .. в любом случае спасибо!! : D - person mk117; 11.06.2013

Здесь много раз задавали этот вопрос и на него отвечали (но не специально для документов Google). Короткий ответ: ничего не поделаешь.

Более длинный ответ заключается в том, что вы можете уменьшить вероятность компрометации учетных данных:

  • с использованием учетных данных, предоставленных пользователю, а не сохраненных в коде
  • использование токенов, предоставленных пользователем, в качестве средства дешифрования учетных данных, хранящихся в вашем коде (но это становится очень сложным с большим количеством пользователей)
  • сохранение учетных данных во включаемом файле, хранящемся вне корня документа
person symcbean    schedule 10.06.2013