Сигурност в Java уеб приложение - Урок 08 (Програмна защита с Tomcat 7)

Търся далеч, за да елиминирам натрапчивия незабавен подкана за идентификационни данни, когато се използва основно удостоверяване, а вместо това обслужва хубава страница, която казва на потребителя къде се намира и какви идентификационни данни да използва, ако иска да продължи.

Измислих този прост .htaccess:

# .htaccess in /auth/ of DocumentRoot AuthType Basic AuthName 'Protected Area' AuthUserFile /path/to/htdocs/auth/.htpasswd  # Grant access to unauthenticated users via GET # Warning!!! Make sure redirect to 'logininfo.html' works!!! Require expr '%{HTTP:Authorization} == ''' Require method GET HEAD OPTIONS  Require expr '%{REQUEST_URI} == '/auth/loginfail.html'' Require valid-user ErrorDocument 401 /auth/loginfail.html RewriteEngine On # show unauthenticated users a nice login info page RewriteCond expr '%{HTTP:Authorization} == ''' RewriteRule .* logininfo.html 

Той предоставя достъп без удостоверяване, когато заглавката на HTTP Authorization е празна за заявки GET / HEAD / OPTIONS. Всички неудостоверени заявки се обработват от logininfo.html POST заявките (напр. Бутон за вход) изискват удостоверяване, като по този начин се задейства подкана за идентификационни данни.

Работи, но мисля, че е някак рисковано и противоположно интуитивно да се предоставя достъп за потребители, които не се удостоверяват. Но мисля, че в този случай е добре. Има ли риск за сигурността с това решение, което съм контролирал?

Бих се интересувал и от решение за обслужване на logininfo.html с HTTP 401/403 вместо с 200. Благодаря.

  • 2 Ще добавя личното си мнение. Потребителите, които познават парола, не са проблем, използвайки основно удостоверяване, става проблем, когато отгатват 10 до 100 секунди, за да си пробият път, което може да бъде предотвратено чрез използване на fail2ban и временни потребители на блокиране за X опити, но .. сайтовете, които имат предвид сигурността, никога няма да използват основната система за удостоверяване, предоставена от Apache, никога не е проектирана за работа с многобройни потребители, нито е мащабируема. Винаги е най-добре да си осигурите достъп на ниво приложение. Като цяло е за предпочитане да се използват скриптове от страна на услугата, PHP, ASP, Python, Java или Ruby и т.н.

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?