diff --git a/django/utils/html.py b/django/utils/html.py
index 5d96f15daa..bb41f48b04 100644
--- a/django/utils/html.py
+++ b/django/utils/html.py
@@ -156,8 +156,10 @@ def strip_tags(value):
if not ('<' in value or '>' in value):
return value
new_value = _strip_once(value)
- if new_value == value:
- # _strip_once was not able to detect more tags
+ if len(new_value) >= len(value):
+ # _strip_once was not able to detect more tags or length increased
+ # due to http://bugs.python.org/issue20288
+ # (affects Python 2 < 2.7.7 and Python 3 < 3.3.5)
return value
else:
value = new_value
diff --git a/docs/releases/1.6.11.txt b/docs/releases/1.6.11.txt
index da10a44301..a7d020c004 100644
--- a/docs/releases/1.6.11.txt
+++ b/docs/releases/1.6.11.txt
@@ -5,3 +5,20 @@ Django 1.6.11 release notes
*March 18, 2015*
Django 1.6.11 fixes two security issues in 1.6.10.
+
+Denial-of-service possibility with ``strip_tags()``
+===================================================
+
+Last year :func:`~django.utils.html.strip_tags` was changed to work
+iteratively. The problem is that the size of the input it's processing can
+increase on each iteration which results in an infinite loop in
+``strip_tags()``. This issue only affects versions of Python that haven't
+received `a bugfix in HTMLParser b