2017-02-09 11 views
3

В настоящее время я создаю расширение с открытым исходным кодом, которое будет отправлять запросы на мой сайт. Это легко сделать с помощью Ajax, запрос будет отправлен на страницу action.php.Убедитесь, что запрос отправлен из оригинального программного обеспечения?

Мой сайт будет использовать PHP, ну и теперь вопрос в том, как я могу убедиться, что action.php получает запрос от исходного расширения? Я имею в виду, что злоумышленники могут легко отправлять ложную информацию на сервер или использовать вилку и отправлять неверные данные. Я думал о создании какого-то маркера, но кто-то мог его воссоздать, я думаю.

Как я могу предотвратить эту ситуацию?

Thanks

+1

невозможно без отправки токен. есть много способов предотвратить подделку токена (т.е. выпустить его с вашего сервера) –

ответ

0

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

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

Решение, в конечном итоге я пришел к выводу, что само расширение не может хранить длительные тайны. Сеанс с тайм-аутом - единственная безопасная вещь для хранения. Действительный логин для моего расширения выполняется через веб-сайт через HTTPS.

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

EDIT: Перечитайте вопрос и заметили, что вы сказали, что делаете это с открытым исходным кодом. Без какой-либо проверки подлинности на веб-сервере через HTTPS вы можете сделать это, чтобы остановить тех, кто решил обходить ваши защиты, потому что они будут отображаться в вашем публичном репозитории.