Скрытие фактической ссылки в гиперссылке - PullRequest
1 голос
/ 13 июля 2011

У меня есть

echo <a href=\"javascript:;\"  onClick=\"window.open('". $link ."','no','scrollbars=yes,width=550,height=400')\" >View report</a>

$ ссылка, содержащая конфиденциальную информацию, поэтому мне интересно, есть ли простой способ предотвратить явное отображение этой ссылки при «просмотре исходного кода» в браузере.Любая альтернатива href будет в порядке.Мне просто нужно дать пользователю возможность кликнуть и посмотреть его результаты обработки после того, как он отправит некоторые данные.Я хотел бы избежать автоматического всплывающих окон, как только обработка будет отправлена.

ОБНОВЛЕНИЕ: таким образом, $ link - это GET-URL, который включает в себя ID пользователя и пароль.Я собираюсь разместить это на нашем онлайн-сервере в будущем.Я очень новичок в PHP, так что это, вероятно, не в ближайшем будущем, так как я не знаю много о функциях безопасности, которые должны быть реализованы для живого сайта в Интернете.Сейчас кажется, что использование базы данных будет лучшим способом.Поправьте меня, если я ошибаюсь, пожалуйста, и спасибо за поддержку!

Ответы [ 5 ]

5 голосов
/ 13 июля 2011

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

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

4 голосов
/ 13 июля 2011

Проще говоря: Нет. Если вы отправите мне URL, я смогу увидеть его с помощью какого-то инструмента. Wireshark, Fiddler и т. Д. Рассмотрите возможность использования другой структуры ссылок.

2 голосов
/ 13 июля 2011

Если пользователь уже владеет сеансом, это вариант:

Если вы отображаете страницу и вам нужно защитить данный пример секретный URL

http://www.MyHost.com/?what?secret&id=23232

сохраните URL-адрес в сеансе пользователя и свяжите значение хеш-функции с секретным URL-адресом .

Вместо отправки URL-адреса на итоговую HTML-страницу вставьте другой URL-адрес , например

http://www.MyHost.com/?continueWith=<hashValue>

Если этот URL-адрес вызывается, проверьте сеанс пользователя, получите и удалите секретный URL-адрес.Затем продолжите оценку, как если бы пользователь вызвал секретный URL.

Таким образом, ни один параметр исходного секретного URL никогда не достигнет браузера пользователя.

КомуУточните схему, добавьте время жизни к URL-адресу, сохраненному в сеансе.Если запрос приходит позже как конец срока службы, верните ошибку.

Если вы защитите все URL-адреса таким образом, пользователи не смогут вызывать произвольные URL-адреса, поскольку все приемлемые URL-адреса находятся внутри ихсессий.Таким образом, пользователь даже не сможет изменить параметры менее секретных URL.

1 голос
/ 13 июля 2011

Как вообще генерируется $link? Если это чувствительно, это подразумевает, что пользователь уже был как-то аутентифицирован. Таким образом, информация в $link может храниться в сеансе, где она безопасна

0 голосов
/ 13 июля 2011

Сохраните всю информацию в своем сеансе PHP (или, предпочтительно, в сеансовой системе, используемой вашей платформой PHP), а затем просто отправьте какой-нибудь не связанный с БД идентификатор в ссылке, чтобы код знал, что вы хотите делать дальше.

Например, у вас может быть ссылка на «http://www.yourdomain.com/sec/special_action/4", где« sec »означает« безопасный »,« special_action »- это имя действия, которое нужно выполнить, а« 4 »- ссылка на идентификатор действия.

Итак, допустим, вам нужно связать его с номером их социального страхования. Затем вы будете использовать в своем бэкэнде соленый хеш для шифрования SSN и сохранения его в данных сеанса. Затем вы добавляете его в конец вашегомассив сессии и получить количество массивов. Если он возвращает 5, то вы знаете, что зашифрованный SSN сохранен в индексе 4 (поскольку PHP использует индексирование на основе 0). Таким образом, вы отправляете этот индекс как часть ссылки, чтобы еще больше запутать.Черт возьми, ты можешь даже подсолить и хешировать индекс, если хочешь.

Пользователь нажимает на ссылку, код находит индекс, захватывает шифрованиеКонтент, расшифровывает его, затем использует.Легко и безопасно.

...