私のホームページでは、訪問者ごとにランダムな投票があります。ホームページをロードすると、自動 HTTP GET によってビューがトリガーされ、そのポーリングの一意のセッション ID が生成されます。これは、ユーザーが必要な投票に投票するために独自の HTTP POST を手動で作成するのではなく、私のビューでランダムに生成した投票にユーザーが実際に投票していることを確認するためです。
ただし、その最初の 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