Я использую GoogleAppEngine со временем выполнения Python, и у меня очень простая форма контакта. Как я могу аннулировать представления, в которых поле содержит HTML?Недопустимый ввод формы, содержащий HTML
ответ
Попробуйте что-то вроде этого, используйте вход с поля и заполнить его в укусе, то вы можете удалить HTML теги из этой строки следующим образом:
Эта функция может лишить HTML для вас и приятно, поскольку она требует только STDLIB Python:
на Python 2
from HTMLParser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
Для Python 3
from html.parser import HTMLParser
class MLStripper(HTMLParser):
def __init__(self):
self.reset()
self.strict = False
self.convert_charrefs= True
self.fed = []
def handle_data(self, d):
self.fed.append(d)
def get_data(self):
return ''.join(self.fed)
def strip_tags(html):
s = MLStripper()
s.feed(html)
return s.get_data()
Другой способ - пересечь начальные и конечные теги, найденные путем попытки проанализировать текст как HTML и пересечь этот набор с известным набором допустимых элементов HTML.
#!/usr/bin/env python
from __future__ import print_function
from HTMLParser import HTMLParser
from html5lib.sanitizer import HTMLSanitizerMixin
class TestHTMLParser(HTMLParser):
def __init__(self, *args, **kwargs):
HTMLParser.__init__(self, *args, **kwargs)
self.elements = set()
def handle_starttag(self, tag, attrs):
self.elements.add(tag)
def handle_endtag(self, tag):
self.elements.add(tag)
def is_html(text):
elements = set(HTMLSanitizerMixin.acceptable_elements)
parser = TestHTMLParser()
parser.feed(text)
return True if parser.elements.intersection(elements) else False
print(is_html("foo bar"))
print(is_html("<p>Hello World!</p>"))
print(is_html("<html><head><title>Title</title></head><body><p>Hello!</p></body></html>")) # noqa
Выход:
$ python foo.py
False
True
True
Вы можете подтвердить представление в соответствии с истинным/ложным значением, возвращенным. Вам необходимо будет реализовать свою логику и процесс, конечно,
Вы должны посмотреть на wtforms. Это отличный инструмент для проверки форм и работает с GAE/P.
С помощью wtforms вы можете написать собственные валидаторы для ввода форм. Один очень всеобъемлющий, но потенциально используемый валидатор будет состоять в том, чтобы отклонить входы формы, которые содержат <
или >
.
- 1. Оператор SQL, содержащий недопустимый
- 2. Дублированный ввод/ввод, содержащий некорректное значение, сгенерированное в HTML
- 3. Ввод HTML-формы со специальными символами
- 4. ввод, содержащий ведущие нули
- 5. Cin принимает недопустимый ввод
- 6. ValidatePatternAttribute принимать недопустимый ввод
- 7. недопустимый ввод пользователем
- 8. Недопустимый ввод в C#
- 9. decode base64: недопустимый ввод
- 10. Недопустимый ввод и репроцессинг
- 11. Недопустимый ввод в C
- 12. Недопустимый ввод формы приводит к отказу Authlogic к другой форме
- 13. Выделите первый недопустимый ввод формы с помощью CSS
- 14. Как центрировать ввод формы в таблице? HTML
- 15. Пользовательский ввод формы HTML для изменения значения
- 16. Ввод даты/времени для формы HTML
- 17. Выравнивание формы HTML - ввод с меткой
- 18. Ввод сценария оболочки, содержащий звездочку
- 19. Недопустимый ввод: domain clientuserinfo нет
- 20. Недопустимый ввод для std :: cin
- 21. Ввод формы формы HTML, затем застрял на странице php
- 22. Как ограничить ввод формы html от передачи формы?
- 23. Ввод формы HTML5, реагирующий на ввод ключа
- 24. Ввод формы ввода кнопки
- 25. ввод времени от формы
- 26. PHP-файл, содержащий только определенные данные из HTML-формы
- 27. Ввод HTML, созданный PHP
- 28. HTML-шаблон, содержащий
- 29. Datatable, содержащий HTML-строку
- 30. PHP разбора недопустимый HTML
Вы также должны искать синтаксис SQL. SQL-инъекция - очень распространенная проблема. – jirungaray