changeset 5287:07617c8d4efc

applying upgrade of 1.5.1 -> 1.6.0. Upgraded login form. Added @csrf tokens to forms using post. Fix security issue by displaying username without escaping html entities. User queries hrefs have their names url quoted which makes multi word queries a valid url.
author John Rouillard <rouilj@ieee.org>
date Sun, 24 Sep 2017 19:19:28 -0400
parents 578b5294e888
children 536344835432
files website/issues/html/page.html
diffstat 1 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/website/issues/html/page.html	Sun Sep 24 19:13:04 2017 -0400
+++ b/website/issues/html/page.html	Sun Sep 24 19:19:28 2017 -0400
@@ -84,6 +84,8 @@
                     type="text" name="@number"/>
              <input type="hidden" name="@type" value="issue"/>
              <input type="hidden" name="@action" value="show"/>
+	     <input name="@csrf" type="hidden"
+		    tal:attributes="value python:utils.anti_csrf_nonce()">
            </form>
          </li>
        </ul>
@@ -91,7 +93,7 @@
    <ul>
      <li tal:condition="python:request.user.username=='anonymous'" class="submenu">
       <b i18n:translate="">User</b>
-      <form method="post" action="#">
+     <form method="post" tal:attributes="action request/base">
        <ul>
       <li>
        <tal:span i18n:translate="">Login</tal:span><br/>
@@ -101,7 +103,14 @@
        <input type="checkbox" name="remember" id="remember"/>
        <label for="remember" i18n:translate="">Remember me?</label><br/>
        <input class="form-small" type="submit" value="Login" i18n:attributes="value"/><br/>
-       <input type="hidden" name="__came_from" tal:attributes="value string:${request/env/PATH_INFO}"/>
+   <input name="@csrf" type="hidden"
+      tal:attributes="value python:utils.anti_csrf_nonce()">
+  <input type="hidden" name="__came_from"
+    tal:condition="exists:request/env/QUERY_STRING"
+    tal:attributes="value string:${request/base}${request/env/PATH_INFO}?${request/env/QUERY_STRING}">
+  <input type="hidden" name="__came_from"
+    tal:condition="not:exists:request/env/QUERY_STRING"
+    tal:attributes="value string:${request/base}${request/env/PATH_INFO}">
        <span tal:replace="structure request/indexargs_form" />
        </li>
        <li>
@@ -116,7 +125,7 @@
      </li>
 
      <li tal:condition="python:request.user.username != 'anonymous'" class="submenu">
-   <p class="label"><b tal:replace="request/user/username">username</b></p>
+   <p class="label"><b tal:replace="python:request.user.username.plain(escape=1)">username</b></p>
     <ul>
     <li>
     <a href="#"
@@ -145,7 +154,7 @@
          tal:condition="python:request.user.hasPermission('View', 'query')">
    <span i18n:translate=""><b>Your Queries</b> (<a class="nomargin" href="query?@template=edit">edit</a>)</span><br/>
    <ul tal:repeat="qs request/user/queries">
-    <li><a tal:attributes="href string:${qs/klass}?${qs/url}&@dispname=${qs/name}"
+    <li><a href="#" tal:attributes="href string:${qs/klass}?${qs/url}&@dispname=${qs/name/url_quote}"
        tal:content="qs/name">link</a></li>
    </ul>
      </li>

Roundup Issue Tracker: http://roundup-tracker.org/