如何防止用户直接访问我的html页面

时间:2016-01-29 21:29:14

标签: javascript jquery python html

我有一个登录页面,它向Python脚本发送请求以验证用户身份。如果未经过身份验证,则会将您重定向到登录页面。如果它将您重定向到HTML表单。问题是您可以通过编写URL来访问HTML表单。如何在不使用模块的情况下确保用户使用我的Python脚本来自登录表单,因为我无法在服务器中安装任何内容。我希望它严格地使用Python我不能使用PHP。可能吗?我可以使用其他方法来完成任务吗?

5 个答案:

答案 0 :(得分:1)

我很明显你只想使用Python,没有框架等......所以问题是你实际上是在重定向到现有的web HTML页面。不要这样做,而是用Python本身提供HTML。

# 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)

答案 1 :(得分:0)

处理用户登录的最佳方法是使用令牌作为cookie 用户成功登录后生成令牌并将其发送给他们,将此令牌保存在内存中#34;数据库(如果您使用的是django服务器) - https://docs.djangoproject.com/en/1.9/intro/tutorial01/,它会为您完成 每次用户访问您网站中的任何内部页面时,请检查已作为cookie标头发送的用户令牌,如果在您的数据库中找到,则将其指向所请求的页面,否则,将其指向登录页面。
如果您提供有关服务器的更多详细信息(服务器类型),我可以为您提供更多帮助

答案 2 :(得分:0)

您刚才要求的是会话管理。以下是OWASP指南:https://www.owasp.org/index.php/Session_Management

你可以使用像python编写的框架,它已经提供了这个安全层。 https://docs.djangoproject.com/en/1.9/topics/http/sessions/

答案 3 :(得分:0)

您必须将 CSRF保护添加到禁止表单,以便从不受信任的来源提交。深入了解What is a CSRF token ? What is its importance and how does it work?问题以了解其工作原理,您也可以查看How does a CSRF token prevent an attack

您可以实现自己的csrf保护逻辑或使用现有的csrf保护逻辑,如Django CSRFFlask CSRF Protection等。(这取决于您项目中使用的技术)。

答案 4 :(得分:-2)

确保在Python中检查“referer”标头,并验证该地址是否为您的登录页面。