【发布时间】:2014-06-28 13:54:22
【问题描述】:
我在 Windows 7 上使用 Python 2.7 在内部网络上运行一个网站。我有一个简单的文本表单(带有一个隐藏值:问题编号),用户可以在其中提交他们的 CTF 竞赛答案。为了防止来自同一台计算机的多个响应,我需要收集客户端的 IPv6 或 MAC 地址。我应该如何做到这一点?我使用 GET 或 POST 方法都没有关系。
这是我当前接受回复的脚本。它位于 cgi-bin 目录中。
import cgi
form = cgi.FieldStorage()
p_number = form.getvalue('problem')
answer = form.getvalue('answer')
这是我托管服务器的脚本。
import BaseHTTPServer
import CGIHTTPServer
import cgitb; cgitb.enable()
def server(port):
server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", port)
httpd = server(server_address, handler)
httpd.serve_forever()
在运行服务器时,我可以在终端中看到客户端访问的所有内容及其 IP。有没有办法将其记录在 .txt 文件中,然后提取所需的值? (如果我有日志,我知道如何提取它们)
如您所见,这是图像,我一直在为网站使用引导程序。
(来源:googledrive.com)
我不想问太多问题,所以这里有一些我想知道的其他事情: 在 Python CGI 中设置和读取 cookie 的最佳方法是什么?是使用 "Set cookie: x=y" 还是导入 Cookie 模块?有没有其他办法?
有没有办法阻止某些用户? 最后,我不允许使用 Python 2.7 中尚未包含的任何其他模块。
【问题讨论】:
-
IPv6 地址对此没有帮助。任何设备都可以同时在子网中为自己提供任意数量的 IPv6 地址(除非上游交换机或路由器阻止)。此外,您的日志文件显示仅通过 IPv4 访问,而不是 IPv6。
-
@Dubu,在上图中,显示的是事实的 IPv6。我的 IPv4 是 24.131.___.___。
-
那些不是 IPv6 地址;它们是 RFC 1918 地址。
标签: python html cookies cgi ipv6