У меня есть назначение программирования сокета python. Одной из задач является предотвращение злонамеренной атаки путем предотвращения любого URL-адреса, содержащего /../
. В своем коде ниже я закомментировал строку кода, которая, как я ожидал, выдаст ошибку 403 Forbidden. Но когда эта строка кода активна, на самом деле ничего не происходит. Я выполняю код из командной строки, используя curl (--path-as-is), чтобы убедиться, что /../ не удален (например, как Chrome делает). Но когда эта строка кода активна, в командной строке ничего не возвращается. Если строка кода закомментирована, то curl возвращает код ошибки 52. Но в конечном итоге я хотел бы получить код ошибки 403.
while True:
print('Ready to serve....')
connectionSocket, addr = serverSocket.accept() #Fill in code to get a connection
try:
message = connectionSocket.recv(1024).decode() #Fill in code to read GET request
filename = message.split()[1]
if("/../" in filename): #security code to see if there is a /../ in the filename URL
#connectionSocket.send('HTTP/1.0 403 Forbidden\r\n'.encode()) # Send HTTP header line(s) into socket
connectionSocket.close()
continue;