我有一個登錄頁面,它向Python腳本發送請求以對用戶進行身份驗證。如果未通過身份驗證,則會將您重定向到登錄頁面。如果它將您重定向到HTML表單。問題是您可以通過編寫URL來訪問HTML表單。我怎樣才能確保用戶來自我的Python腳本的登錄表單而不使用模塊,因爲我無法在我的服務器中安裝任何東西。我希望它嚴格使用Python我無法使用PHP。可能嗎?我可以使用其他方法來完成任務嗎?如何防止用戶直接訪問我的html頁面
回答
很明顯,你只是想使用Python,沒有框架等......所以問題是你實際上是重定向到一個現有的Web頁面。不要這樣做,而是用Python本身提供HTML。
# pages.py
class DefaultPage(object):
def __init__(self):
self.html = '''
All Your HTML Here
'''
def self.display:
return self.html
顯然你使用的東西,以滿足您的Python,我假設一些簡單的像谷歌應用程序引擎啓動,在這種情況下,你可以隨便寫的類。即使你使用其他一些簡單的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)
請確保在Python中檢查「referer」標頭,並驗證地址是您的登錄頁面。
這可以很容易僞造。 –
有人知道他們在做什麼,當然。 –
默默無聞的安全性並不安全。如果它可以僞造並且目標有任何價值,那麼它將被僞造。 –
處理用戶登錄的最佳方法是將令牌用作cookie。
用戶成功登錄後生成一個令牌並將其發送給他們,將此令牌保存到「內存」數據庫(如果您使用的是類似django服務器的服務器) - https://docs.djangoproject.com/en/1.9/intro/tutorial01/,它會爲您提供。
每次用戶訪問您網站中的任何內部頁面時,請檢查已作爲Cookie標頭髮送的用戶令牌,如果在您的數據庫中找到,則將其指向請求的頁面,否則,請將其指向登錄頁面。
如果您提供有關服務器的更多詳細信息(服務器類型),我可以爲您提供更多幫助
我在Linux服務器上運行我的Python腳本,它檢查用戶是否在數據庫中。目前我有它,如果它被認證它打印的HTML表單,我希望它重定向你,而不是隻是打印整個表單。 –
你有控制用戶重定向嗎?如果他不是數據庫,那麼如何將用戶重定向到登錄頁面呢? –
我正在使用JavaScript將您重定向到登錄頁面,以防萬一驗證失敗。 –
您剛剛要求的內容稱爲會話管理。這裏是關於它的OWASP指南:https://www.owasp.org/index.php/Session_Management
你可以使用像Django這樣的框架,它已經提供了這個安全層。 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頁面的url直接訪問頁面
- 3. PHP:防止直接訪問頁面
- 4. 阻止用戶直接訪問頁面
- 5. 防止直接訪問節點js中的html頁面
- 6. 如何防止用戶直接在node.js中訪問網頁?
- 7. 如何防止某人直接訪問頁面鏈接?
- 8. 如何防止直接訪問Grails中的* .gsp頁面
- 9. 如何防止直接訪問iframe頁面
- 10. 如何防止直接訪問PHP頁面?
- 11. 防止用戶訪問管理頁面
- 12. 防止用戶訪問某些頁面直到註冊
- 13. 如何防止直接訪問URL?
- 14. 如何防止直接訪問文件?
- 15. 如何防止直接訪問內容?
- 16. 如何防止直接訪問圖像?
- 17. 防止直接訪問PHP
- 18. 如何防止訪客用戶訪問管理頁面
- 19. 直接鏈接禁止頁面訪問
- 20. 直接頁面訪問預防
- 21. Glassfish的如何防止HTML文件直接訪問
- 22. 防止直接訪問JSF中的某個頁面
- 23. 防止用戶訪問頁面,如果不是當前用戶
- 24. 禁止直接訪問某個頁面
- 25. 如何防止用戶訪問管理頁面
- 26. 直接html頁面訪問被拒絕
- 27. 阻止對HTML頁面的直接訪問
- 28. 如何防止用戶在註銷後使用鏈接訪問該頁面?
- 29. 防止直接訪問URL的文件?
- 30. 阻止通過.htaccess直接訪問php和html頁面
您的後端是用Python編寫的嗎?它如何提供文件?因爲如果你可以攔截服務,你可以檢查用戶是否被認證(很多很多方法),然後執行重定向。 –
這是一個基本的安全問題。 無論您使用什麼框架生成頁面,都必須在返回每個受保護頁面之前檢查用戶是否已登錄(通過安全令牌)。這要求整個會話進行加密(HTTPS)以避免有人捕獲請求並重播它們。 不幸的是,解釋如何做到這一點對於StackOverflow答案來說太廣泛了。在網絡上研究「會話管理」。 –
我在Linux服務器上運行我的Python腳本,它檢查用戶是否在數據庫中。目前我有它,如果它被認證,它打印的HTML表單,我希望它重定向你,而不是隻打印整個表格 –