From 65bcfe0367f459348cf26a00215c93420906c3be Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Mon, 11 Dec 2017 00:39:11 +0100 Subject: [PATCH] theme: properly HTML-escape all content and test the results. --- pelican-theme/templates/archives.html | 4 +- pelican-theme/templates/article.html | 28 ++-- pelican-theme/templates/article_header.html | 2 +- pelican-theme/templates/author.html | 4 +- pelican-theme/templates/base.html | 50 ++++---- pelican-theme/templates/base_blog.html | 14 +- .../templates/base_blog_section.html | 4 +- pelican-theme/templates/category.html | 4 +- pelican-theme/templates/page.html | 26 ++-- pelican-theme/templates/pagination.html | 4 +- pelican-theme/templates/tag.html | 4 +- .../test/blog_html_escape/article-jumbo.html | 120 ++++++++++++++++++ .../test/blog_html_escape/article-jumbo.rst | 12 ++ .../test/blog_html_escape/article.html | 89 +++++++++++++ .../test/blog_html_escape/article.rst | 11 ++ .../author-and-in-author.html | 83 ++++++++++++ .../author-and-in-author2.html | 83 ++++++++++++ .../category-and-in-category.html | 83 ++++++++++++ .../category-and-in-category2.html | 83 ++++++++++++ .../test/blog_html_escape/index.html | 83 ++++++++++++ .../test/blog_html_escape/index2.html | 80 ++++++++++++ .../test/blog_html_escape/tag-and-in-tag.html | 83 ++++++++++++ .../blog_html_escape/tag-and-in-tag2.html | 83 ++++++++++++ .../test/layout_html_escape/index.html | 97 ++++++++++++++ .../test/page_html_escape/breadcrumb.html | 41 ++++++ .../test/page_html_escape/breadcrumb.rst | 4 + .../test/page_html_escape/content.html | 46 +++++++ .../test/page_html_escape/content.rst | 7 + .../test/page_html_escape/landing.html | 54 ++++++++ .../test/page_html_escape/landing.rst | 12 ++ pelican-theme/test/page_html_escape/page.html | 60 +++++++++ pelican-theme/test/page_html_escape/page.rst | 10 ++ pelican-theme/test/test_blog.py | 31 +++++ pelican-theme/test/test_layout.py | 39 ++++++ pelican-theme/test/test_page.py | 39 ++++++ 35 files changed, 1405 insertions(+), 72 deletions(-) create mode 100644 pelican-theme/test/blog_html_escape/article-jumbo.html create mode 100644 pelican-theme/test/blog_html_escape/article-jumbo.rst create mode 100644 pelican-theme/test/blog_html_escape/article.html create mode 100644 pelican-theme/test/blog_html_escape/article.rst create mode 100644 pelican-theme/test/blog_html_escape/author-and-in-author.html create mode 100644 pelican-theme/test/blog_html_escape/author-and-in-author2.html create mode 100644 pelican-theme/test/blog_html_escape/category-and-in-category.html create mode 100644 pelican-theme/test/blog_html_escape/category-and-in-category2.html create mode 100644 pelican-theme/test/blog_html_escape/index.html create mode 100644 pelican-theme/test/blog_html_escape/index2.html create mode 100644 pelican-theme/test/blog_html_escape/tag-and-in-tag.html create mode 100644 pelican-theme/test/blog_html_escape/tag-and-in-tag2.html create mode 100644 pelican-theme/test/layout_html_escape/index.html create mode 100644 pelican-theme/test/page_html_escape/breadcrumb.html create mode 100644 pelican-theme/test/page_html_escape/breadcrumb.rst create mode 100644 pelican-theme/test/page_html_escape/content.html create mode 100644 pelican-theme/test/page_html_escape/content.rst create mode 100644 pelican-theme/test/page_html_escape/landing.html create mode 100644 pelican-theme/test/page_html_escape/landing.rst create mode 100644 pelican-theme/test/page_html_escape/page.html create mode 100644 pelican-theme/test/page_html_escape/page.rst diff --git a/pelican-theme/templates/archives.html b/pelican-theme/templates/archives.html index bcafc4ec..41b76109 100644 --- a/pelican-theme/templates/archives.html +++ b/pelican-theme/templates/archives.html @@ -2,10 +2,10 @@ {% block head_links %} {% if articles_page and articles_page.has_previous() %} - + {% endif %} {% if articles_page and articles_page.has_next() %} - + {% endif %} {% endblock head_links %} diff --git a/pelican-theme/templates/article.html b/pelican-theme/templates/article.html index 03bcc708..49b4b221 100644 --- a/pelican-theme/templates/article.html +++ b/pelican-theme/templates/article.html @@ -1,25 +1,25 @@ {% extends "base_blog.html" %} -{% block title %}{{ article.title }} | {{ M_BLOG_NAME }}{% endblock %} +{% block title %}{{ article.title }} | {{ M_BLOG_NAME|e }}{% endblock %} {% block head %} {{- super() -}} {% if article.description %} - + {% endif %} - + - - + + {% if article.summary %} - - + + {% endif %} {% if article.cover %} - + - + {% else %} {% endif %} @@ -28,21 +28,21 @@ {% block content %} {% if article.cover %} -
+
-
+
-
{{ article.locale_date }}
+
{{ article.locale_date|e }}
{% if article.authors %} -
{% for author in article.authors %}{{ author }}{% endfor %}
+
{% for author in article.authors %}{{ author|e }}{% endfor %}
{% endif %}
{% set title = article.title.split(' — ') %} -

{{ title[0] }}

+

{{ title[0] }}

{% if title|length >= 2 %}

{{ title[1] }}

{% endif %} diff --git a/pelican-theme/templates/article_header.html b/pelican-theme/templates/article_header.html index ba5d7847..610762ad 100644 --- a/pelican-theme/templates/article_header.html +++ b/pelican-theme/templates/article_header.html @@ -1,5 +1,5 @@
-

+

{% endblock %} diff --git a/pelican-theme/templates/base.html b/pelican-theme/templates/base.html index 70042623..97a2bc06 100644 --- a/pelican-theme/templates/base.html +++ b/pelican-theme/templates/base.html @@ -3,17 +3,17 @@ {% block head %} - {% block title %}{{ SITENAME }}{% endblock title %} + {% block title %}{{ SITENAME|e }}{% endblock title %} {% for href in M_CSS_FILES %} {% endfor %} {% block head_links %} {% endblock head_links %} {% if FEED_ALL_ATOM_URL %} - + {% endif %} {% if CATEGORY_FEED_ATOM_URL and category %} - + {% endif %} {% if M_THEME_COLOR %} @@ -26,8 +26,8 @@
- {%- if M_SITE_LOGO %}{% endif -%} - {{- M_SITE_LOGO_TEXT or SITENAME -}} + {%- if M_SITE_LOGO %}{% endif -%} + {{- (M_SITE_LOGO_TEXT or SITENAME)|e -}} {% if M_LINKS_NAVBAR1 or M_LINKS_NAVBAR2 %} @@ -37,13 +37,13 @@