Как очистить входящие значения из GET и POST, чтобы предотвратить внедрение кода с помощью скрипта Python3 CGI - PullRequest
0 голосов
/ 05 июня 2019

Среда:

  • Apache2, работающий на linux box
  • Python3 для CGI

Конечный пользователь получит URL с authкод, добавленный к нему, например,

example.com/cgi-bin/index?auth=sdfhsaFDSs34Ddf3

index - это скрипт python3, который извлекает значение auth для сравнения его с базой данных и затем возвращает файл (здесь не показан)

#!/usr/bin/env python

# Turn on debug mode
import cgi, cgitb

#cgitb.enable()
OUTDIR="/var/www/test/"
cgitb.enable(display=0, logdir=OUTDIR)

# Create instance of FieldStorage
form = cgi.FieldStorage()

# Get data from fields
auth = form.getvalue('auth')

# Print required headers
print("Content-Type:text/html;charset=UTF-8")
print()
print(f"auth= {auth}")
print(f"length of auth= {len(auth)}")

Пользователь, который вставляет URL в свой браузер, может манипулировать значением auth, если он пожелает.Если они изменят его, чтобы он содержал специальные символы, например

example.com/cgi-bin/index?auth=asdfsad#$%@@243

Сценарий будет печатать только

auth= asdfsad length of auth= 7 

Я не уверен, что происходит с остальными.Я предполагаю, что это вещь кодирования.Но что еще более важно, я хотел бы знать, как безопасно извлечь значение auth, чтобы я мог обработать его без риска сбоя скрипта, переполнения буфера или внедрения кода.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...