2013-06-10 3 views
2

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

?> 
+0

Должен быть пользователь с доступом к вашему файлу. Поэтому ваш пароль будет читабельным. Как насчет того, чтобы не делиться этим пользователем с кем-либо или не делиться сервером с кем-либо? – BLaZuRE

+1

** Почему/как ** мог/мог прочитать код? Если это должно быть безопасно, не ставьте пароли в коды - это так просто. – h2ooooooo

+0

@BLaZuRE: Что значит доступ к пользователю? Электронная таблица будет сохранена в моей учетной записи google google, поэтому пароль учетной записи не должен быть моим собственным паролем учетной записи? Или я могу создать фиктивного пользователя в документах Google? Как личности на почте yahoo? – mk117

ответ

2

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

Выполнить этот скрипт, используя свой оригинальный пароль

<?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";

+0

Спасибо! Есть ли какая-либо функция PHP, которая может кодировать строку пароля в md5 или sha? Я где-то читал, что PHP поддерживает дешифрование строк в этих двух форматах .... – mk117

+1

Похоже, они сделали это здесь [ссылка] (http://stackoverflow.com/questions/15194663/encrypt-and-decrypt-md5), но он не работал бы для меня, мой php5-mcrypt не понравился мне по какой-то причине. они дают советы по его исправлению здесь [link] (http://stackoverflow.com/questions/2604435/fatal-error-call-to-undefined-function-mcrypt-encrypt). Это сработало, затем я запустил скрипт md5, и он отлично работает! –

+0

Ну, я нашел сайт онлайн, который преобразует строку в md5 и обратно в строку тоже! Вот ссылка [http://www.md5hashgenerator.com/] – mk117

0

Этот вопрос был задан и ответил много раз здесь (но не специально для Документов Google). Короткий ответ: вы ничего не можете сделать.

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

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

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

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

+0

, так что я должен включить его через: 'include ("config.php"); команда? Если да, то какой может быть код для файла config.php? – mk117

+0

просто Когда кто-то хочет получить к нему доступ из Интернета, он будет невидим для него. Как я написал, лучшим решением является перемещение этого файла над корнем документа. – Robert

+0

Хорошо! Благодаря! Я понял теперь .. также, с помощью корня документа, вы имеете в виду JUST AFTER ' mk117

Смежные вопросы