在我的主頁上,我爲每個訪問者隨機進行民意調查。加載主頁後,自動HTTP GET觸發我的視圖爲該輪詢生成唯一的會話ID。這是爲了確保用戶確實對我在我看來爲他們隨機生成的投票進行投票,而不是僅僅手動構建他們自己的HTTP POST來對他們想要的投票進行投票。Django HTTP GET安全
但是,通過最初的HTTP GET,我還將唯一ID保存到我的數據庫,以便驗證他們將來的POST。如果用戶使用HTTP GET發送垃圾郵件來觸發多個數據庫寫入,這是否會產生安全問題?
我明白,HTTP GET不應該改變我的應用程序的狀態,但是這是適合HTTP GET的時候嗎?如果不是,我將如何解決這個困境?
當我用HTTP GET跨越我的服務器時,出現以下錯誤。這個錯誤是來自寫入我的數據庫還是其他內容?
Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 86, in run
self.finish_response()
File "/usr/lib/python2.7/wsgiref/handlers.py", line 127, in finish_response
self.write(data)
File "/usr/lib/python2.7/wsgiref/handlers.py", line 210, in write
self.send_headers()
File "/usr/lib/python2.7/wsgiref/handlers.py", line 268, in send_headers
self.send_preamble()
File "/usr/lib/python2.7/wsgiref/handlers.py", line 195, in send_preamble
self._write('Server: %s\r\n' % self.server_software)
File "/usr/lib/python2.7/socket.py", line 324, in write
self.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 104] Connection reset by peer
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 58092)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 582, in process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/local/lib/python2.7/dist-packages/django/core/servers/basehttp.py", line 139, in __init__
super(WSGIRequestHandler, self).__init__(*args, **kwargs)
File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__
self.finish()
File "/usr/lib/python2.7/SocketServer.py", line 693, in finish
self.wfile.flush()
File "/usr/lib/python2.7/socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 32] Broken pipe
錯誤可能來自服務器超載,而不是來自您的應用程序。我真的不明白你想要達到什麼目的,但是要重新說話? –
是的,我重寫了最好的我可以:)感謝您對超載服務器的洞察力,這是否可以在生產服務器上部署這個服務器而不是在開發服務器上進行修復? – user1431282
使用生產服務器可以讓您爲更多的用戶提供服務,是的。關於您的使用案例,我並不十分明白爲單個用戶顯示投票的過程。 –