2014-10-21 3 views
1

Я пишу сценарии селена (seleno) для проверки веб-приложения aC# MVC, которое требует от пользователей входа в систему. В настоящее время имя пользователя и пароль жестко закодированы в скрипт, но мне нужно убедитесь, что пароль защищен, прежде чем я могу зафиксировать скрипты в нашем репозитории кода.Как защитить пароль в сценариях Selenium

Сценарии будут выполняться автономно через CI (TeamCity), поэтому пароль должен быть доступен программе без какого-либо человеческого ввода.

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

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

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

Я бы подумал, что это будет очень распространенная проблема с селеном, но я пока не смог найти окончательное решение.

+1

«Если кто-то получает доступ к нашей кодовой базе», то у вас есть совершенно разные проблемы! «Я бы подумал, что это будет очень распространенная проблема с селеном» ... протест ** тест ** пароли - это пустая трата усилий, поэтому, как правило, это не проблема. У вас нет тестовых учетных записей/паролей, которые удаляли db перед отправкой приложения клиентам? – SiKing

+0

Я заметил ваш комментарий о том, что вы не знаете, как вставлять временные пароли. Это легко: пойдите, возьмите Кокс, идите к своему разработчику db, и сделайте друга. Попросите его объяснить вам «JDBC». – SiKing

+0

Вы приближаетесь к проблеме из-за неправильного угла. Управление тестовыми паролями - это то, что * сильно * зависит от программного обеспечения сервера, на котором вы работаете. Я делаю это определенным образом для одного из моих приложений Django, но говорю вам, как я это делаю, это не будет особенно полезно для вас. SiKing дал вам один вариант: напрямую поговорить с БД. У вас также могут быть представления, которые существуют только во время тестирования, которые могли бы помочь вам сделать это, не обсуждая напрямую с БД. Или у вас может быть специальный проводной протокол для этого (что я и делаю). – Louis

ответ

0

Как утверждает SiKing, решение заключается в использовании временного тестового пароля, который не будет входить в производственный код. Simples.

1

Один подход, который я использовал, чтобы выполнить JavaScript, чтобы оценивать вещи:

<td>storeEval</td> 
<td>prompt(&quot;What password&quot;)</td> 
<td>secretPassword</td> 

Это только действительно работает для пользователя запустить вещи с помощью WebDriver, хотя.

Вы мог установки какое-то небольшая просьба АЯКСА в начале испытания на http://localhost/credentials.json или аналогичный, который установлен на вашем экземпляре CI (но не доступен в другом месте).

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