У меня есть страница входа, которая отправляет запрос на скрипт Python для аутентификации пользователя. Если он не аутентифицирован, он перенаправляет вас на страницу входа. Если он перенаправляет вас в HTML-форму. Проблема в том, что вы можете получить доступ к форме HTML, написав URL-адрес. Как я могу убедиться, что пользователь пришел из формы входа с моим скриптом Python без использования модулей, потому что я не могу ничего установить на своем сервере. Я хочу, чтобы это было строго с Python. Я не могу использовать PHP. Является ли это возможным? Могу ли я использовать другие методы для выполнения задачи?Как запретить пользователю напрямую обращаться к моей странице html
ответ
Для меня очевидно, что вы хотите использовать Python, без фреймворков и т. Д. Поэтому проблема в том, что вы фактически перенаправляетесь на существующую веб-страницу HTML. Не делайте этого, вместо этого используйте HTML с самим Python.
# pages.py
class DefaultPage(object):
def __init__(self):
self.html = '''
All Your HTML Here
'''
def self.display:
return self.html
Очевидно вы используете что-то, чтобы служить вашей Python, я что-то простое, как Google App Engine Launcher, в этом случае вы можете просто написать класс, предполагая. Даже если вы используете какой-либо другой простой WSGI, концепция остается прежней.
# main.py
import webapp2
from pages import DefaultPage
class MainHandler(webapp2.RequestHandler):
def get(self):
page = DefaultPage()
self.response.write(page.display())
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
Обязательно проверьте заголовок «referer» на Python и убедитесь, что адрес является вашей страницей входа.
Это легко подделать. –
Кто-то, кто знает, что они делают, конечно. –
Безопасность от неизвестности - это не безопасность. Если это может быть фальсифицировано, и цель имеет какую-либо ценность, она будет подделана. –
Лучший способ обработки пользовательского входа - использовать маркеры как куки.
После успешного входа пользователя создайте токен и отправьте его им, сохраните этот токен в своей «в памяти» DB (если вы используете что-то вроде сервера django) - https://docs.djangoproject.com/en/1.9/intro/tutorial01/, он делает это за вас.
Каждый раз, когда пользователь получает доступ к любой внутренней странице вашего веб-сайта, проверьте токен пользователя, который был отправлен как заголовок файла cookie, если он находится в вашей БД, направьте его на запрошенную страницу, иначе перенаправьте его на страницу входа.
Я могу вам помочь, если вы дадите более подробную информацию о своем сервере (тип сервера)
Я запускаю свой сценарий Python на сервере linux, где он проверяет, находится ли пользователь в базе данных. В настоящее время у меня есть это, если он аутентифицирован, он печатает форму html, и я хочу, чтобы она перенаправляла вас, а не просто печатала всю форму. –
У вас есть контроль над перенаправлением пользователя? как насчет перенаправления пользователя на страницу входа, если он не является БД? –
Я использую javascript, чтобы перенаправить вас на страницу входа в систему, если он не прошел аутентификацию. –
То, что вы только что попросили, называется Session Management. Вот руководство OWASP на нем: https://www.owasp.org/index.php/Session_Management
Вы можете использовать фреймворки, такие как Django, написанные на python, которые уже предоставляют этот уровень безопасности. https://docs.djangoproject.com/en/1.9/topics/http/sessions/
Ответы только на ссылки очень разочарованы. –
Я вижу, но разве это не так? –
Ссылки со временем ухудшаются. Ожидается, что ответы на SO будут полезны будущим пользователям, поэтому они должны быть автономными. –
Вы должны добавить защиту CSRF в запретить формы, направляющую из ненадежных источников. Погрузитесь в вопрос What is a CSRF token ? What is its importance and how does it work?, чтобы понять, как это работает, а также вы можете посмотреть на How does a CSRF token prevent an attack.
Вы можете реализовать собственную логику защиты csrf или использовать существующую, например, Django CSRF или Flask CSRF Protection и т. Д. (Это зависит от технологий, используемых в вашем проекте).
- 1. Как я могу запретить пользователю напрямую обращаться к HTML-странице
- 2. запрещает пользователю напрямую обращаться к файлу jsp
- 3. Как запретить пользователю доступ к странице администратора
- 4. Как запретить доступ к моей веб-странице?
- 5. Как запретить гостевому пользователю доступ к странице администратора
- 6. Как запретить пользователю доступ к странице, введя URL-адрес напрямую с помощью PHP?
- 7. Как запретить пользователю получать доступ к моей домашней странице, когда вы не вошли в систему
- 8. Запретить пользователю доступ к веб-странице Iframe с использованием asp.net
- 9. Как запретить пользователю вводить прямой url
- 10. Как запретить пользователю напрямую обращаться к API-интерфейсу сервера и вместо этого использовать их для использования пользовательского интерфейса?
- 11. Может ли сервер напрямую обращаться к клиенту
- 12. Может ли AngularDart напрямую обращаться к компоненту?
- 13. Как запретить пользователям не напрямую обращаться к частному контенту с помощью PHP
- 14. Как запретить посетителям напрямую обращаться к каталогам на моем веб-сайте?
- 15. HTML/JavaScript Сценарий добавления к моей странице
- 16. Как запретить пользователю получать доступ к полному источнику приложения angularjs
- 17. Как запретить пользователю оставлять комментарий другому пользователю
- 18. Как запретить пользователям доступ к странице администратора?
- 19. Как запретить пользователю вводить отрицательные значения в Html-ввод
- 20. iOS Parse запретить пользователю
- 21. Как предотвратить доступ к странице PHP напрямую?
- 22. Запретить доступ к странице благодарности?
- 23. Запретить пользователю Linux подключаться к WinSCP
- 24. Как запретить пользователю приложение java
- 25. Как запретить сервлет запускаться напрямую через браузер
- 26. Запретить пользователю обновлять страницу
- 27. Запретить пользователю отклонять уведомление
- 28. В TabBarViewController, как я могу напрямую обращаться к своим детям?
- 29. mean.io cronjob | Как напрямую обращаться к серверным контроллерам?
- 30. Запретить пользователю доступ к действию, доступному по коду
Является ли ваш backend написанным на Python? Как он обслуживает файлы? Поскольку, если вы можете перехватить службу, вы можете выполнить проверку, если пользователь аутентифицирован (многие, многие способы сделать это), а затем выполнить перенаправление. –
Это фундаментальная проблема безопасности. Независимо от того, какую структуру вы используете для создания страниц, необходимо проверить, что пользователь вошел в систему (через защищенный токен), прежде чем возвращать каждую защищенную страницу. Для этого требуется, чтобы весь сеанс был зашифрован (HTTPS), чтобы избежать захвата запросов и их повторного воспроизведения. К сожалению, объяснение того, как это сделать, является слишком широкой темой для ответа StackOverflow. Исследование «Управление сеансами» в Интернете. –
Я запускаю свой скрипт Python на сервере linux, где он проверяет, находится ли пользователь в базе данных.В настоящее время у меня есть это, если он аутентифицирован, он печатает форму html, и я хочу, чтобы она перенаправляла вас, а не просто печатала всю форму. –