Среда:
- 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
, чтобы я мог обработать его без риска сбоя скрипта, переполнения буфера или внедрения кода.
Спасибо.