Хелпикс

Главная

Контакты

Случайная статья





import cgi. Но есть нюанс. import cgi. import html



import cgi

 

form = cgi.FieldStorage()

text1 = form.getfirst("TEXT_1", "не задано")

text2 = form.getfirst("TEXT_2", "не задано")

 

print("Content-type: text/html\n")

print("""<!DOCTYPE HTML>

   <html>

   <head>

       <meta charset="utf-8">

       <title>Обработка данных форм</title>

   </head>

   <body>""")

 

print("<h1>Обработка данных форм!</h1>")

print("<p>TEXT_1: {}</p>".format(text1))

print("<p>TEXT_2: {}</p>".format(text2))

 

print("""</body>

   </html>""")

Попробуем это в действии (кто сидит на linux, не забудьте поставить права на выполнение).

Запускаем локальный сервер, и переходим на localhost:8000:

Но есть нюанс...

А если попробовать так?

Это серьёзная уязвимость, поэтому от неё нужно избавляться. Для этого нужно (в самом простом случае) экранировать все опасные символы. Это можно сделать с помощью функции escape из модуля html.

Перепишем form.py:

#!/usr/bin/env python3

import cgi

import html

 

form = cgi.FieldStorage()

text1 = form.getfirst("TEXT_1", "не задано")

text2 = form.getfirst("TEXT_2", "не задано")

text1 = html.escape(text1)

text2 = html.escape(text2)

 

print("Content-type: text/html\n")

print("""<!DOCTYPE HTML>

   <html>

   <head>

       <meta charset="utf-8">

       <title>Обработка данных форм</title>

   </head>

   <body>""")

 

print("<h1>Обработка данных форм!</h1>")

print("<p>TEXT_1: {}</p>".format(text1))

print("<p>TEXT_2: {}</p>".format(text2))

 

print("""</body>

   </html>""")

Результат можете проверить сами.

Вообще говоря, экранирование нежелательных символов везде, где нужно - очень большая проблема безопасности веб-приложений. Помните об этом.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.