Как защитить потребителя OpenID от злоупотреблений? - PullRequest
8 голосов
/ 09 октября 2011

Я рассматриваю OpenID как метод входа в систему для моего PHP-приложения, но есть одна вещь, которая мешает мне продолжать: как я могу защитить потребителя OpenID от злоупотреблений?

Пример злоупотребленияOpenID с использованием потребителя в качестве прокси

Злоупотребление включает в себя переполнение других серверов запросами, использование моего приложения в качестве прокси, передачу большого объема загрузки в виде URL-адреса или ненужное замедление работы сервера при выполнении большого количества запросов.

Полагаю, мне следует применить ограничение скорости выполнения запросов, но как мне это сделать?Возможные злоумышленники могут использовать другие прокси или TOR для обхода проверок IP.Ограничение разрешенных провайдеров будет противоречить принципам OpenID, верно?

Я не ожидаю, что мои пользователи будут злыми, но я хотел бы знать, какие вещи я должен принять во внимание, прежде чем добавлять другое возможноевектор атаки.

Если это имеет значение, я собираюсь использовать lightopenid в качестве серверной части для приложения PHP.

Ответы [ 3 ]

3 голосов
/ 25 октября 2011

Вам нужно разделить атаки на два пула.1) Атаки против вашего собственного сайта и 2) Атаки против кого-то другого, использующего вас в качестве прокси.Ни одна из этих проблем не является новой или уникальной для OpenID.Например, классические формы электронной почты «расскажи другу» могут быть автоматизированы для рассылки спама по электронной почте с IP-адреса и адреса электронной почты прокси-стороны, защищая спам-рассылку от последствий и предоставляя им (потенциально) чистый IP / адрес электронной почты, который не являетсяуже отмечены защитой от спама.В первую очередь это было решено с помощью «CAPTCHA», чтобы предотвратить автоматическое использование формы.

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

Для атак на чужой сайт применяются многие из тех же принципалов, которые упоминались в этом другом вопросе.Отрегулируйте запросы на проверку подлинности, отклоните необоснованные или неправильно сформированные запросы, проверьте заголовок Content-Length по фактическому содержимому на POST-назад и, конечно, вы всегда можете добавить классическую «CAPTCHA», чтобы предотвратить автоматические атаки с использованием вашего OpenID-потребителя.Также вопреки другим предложениям, я бы не ограничивал использование TID OpenID, а скорее IP-адрес запрашивающей стороны.Да, люди могут арендовать прокси-IP-адреса, но вы не можете регулировать их в зависимости от TLD, поскольку база пользователей для каждого поставщика OpenID будет сильно различаться.Вы также можете приобрести базу данных известных IP прокси у таких компаний, как MaxMind .Если пользователь идет с IP-адреса прокси, увеличьте агрессивность своего регулирования.

0 голосов
/ 25 октября 2011

Я бы сделал что-нибудь попроще.Ограничьте конечные точки OpenID ограниченным набором доверенных: Google, WordPress, Myopenid, Yahoo.Вероятно, он охватит большинство пользователей и не позволит ботам заставить ваш сайт генерировать трафик на случайные сайты.

0 голосов
/ 22 октября 2011

Замедляйте запросы пропорционально количеству запросов определенного домена.

Например, предположим, что кто-то пытается использовать вас для DOS-сервера example.com, запрашивая множество URL-адресов, таких как http://example.com/foo, http://example.com/bar, http://example.com/foobar120382.Рассматривайте все эти запросы как запросы для example.com и выполняйте первый запрос без каких-либо задержек.Задержка 2 секунды перед выполнением следующего запроса, задержка 4 секунды перед выполнением третьего запроса, задержка 8 секунд перед выполнением четвертого запроса, 16 секунд до пятого и т. Д.

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

Очевидно, вам также следует создать своего рода белый или серый список для обычных крупных поставщиков OpenID, таких как Googleили myOpenID.Эти домены, вероятно, будут запрашиваться очень часто.

...