comparison website/issues/html/page.html @ 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 d24e156f9069
children 3e740c65510e
comparison
equal deleted inserted replaced
5286:578b5294e888 5287:07617c8d4efc
82 i18n:attributes="value"/> 82 i18n:attributes="value"/>
83 <input class="form-small" size="4" 83 <input class="form-small" size="4"
84 type="text" name="@number"/> 84 type="text" name="@number"/>
85 <input type="hidden" name="@type" value="issue"/> 85 <input type="hidden" name="@type" value="issue"/>
86 <input type="hidden" name="@action" value="show"/> 86 <input type="hidden" name="@action" value="show"/>
87 <input name="@csrf" type="hidden"
88 tal:attributes="value python:utils.anti_csrf_nonce()">
87 </form> 89 </form>
88 </li> 90 </li>
89 </ul> 91 </ul>
90 92
91 <ul> 93 <ul>
92 <li tal:condition="python:request.user.username=='anonymous'" class="submenu"> 94 <li tal:condition="python:request.user.username=='anonymous'" class="submenu">
93 <b i18n:translate="">User</b> 95 <b i18n:translate="">User</b>
94 <form method="post" action="#"> 96 <form method="post" tal:attributes="action request/base">
95 <ul> 97 <ul>
96 <li> 98 <li>
97 <tal:span i18n:translate="">Login</tal:span><br/> 99 <tal:span i18n:translate="">Login</tal:span><br/>
98 <input size="10" name="__login_name"/><br/> 100 <input size="10" name="__login_name"/><br/>
99 <input size="10" type="password" name="__login_password"/><br/> 101 <input size="10" type="password" name="__login_password"/><br/>
100 <input type="hidden" name="@action" value="Login"/> 102 <input type="hidden" name="@action" value="Login"/>
101 <input type="checkbox" name="remember" id="remember"/> 103 <input type="checkbox" name="remember" id="remember"/>
102 <label for="remember" i18n:translate="">Remember me?</label><br/> 104 <label for="remember" i18n:translate="">Remember me?</label><br/>
103 <input class="form-small" type="submit" value="Login" i18n:attributes="value"/><br/> 105 <input class="form-small" type="submit" value="Login" i18n:attributes="value"/><br/>
104 <input type="hidden" name="__came_from" tal:attributes="value string:${request/env/PATH_INFO}"/> 106 <input name="@csrf" type="hidden"
107 tal:attributes="value python:utils.anti_csrf_nonce()">
108 <input type="hidden" name="__came_from"
109 tal:condition="exists:request/env/QUERY_STRING"
110 tal:attributes="value string:${request/base}${request/env/PATH_INFO}?${request/env/QUERY_STRING}">
111 <input type="hidden" name="__came_from"
112 tal:condition="not:exists:request/env/QUERY_STRING"
113 tal:attributes="value string:${request/base}${request/env/PATH_INFO}">
105 <span tal:replace="structure request/indexargs_form" /> 114 <span tal:replace="structure request/indexargs_form" />
106 </li> 115 </li>
107 <li> 116 <li>
108 <a href="user?@template=register" 117 <a href="user?@template=register"
109 tal:condition="python:request.user.hasPermission('Register', 'user')" 118 tal:condition="python:request.user.hasPermission('Register', 'user')"
114 </ul> 123 </ul>
115 </form> 124 </form>
116 </li> 125 </li>
117 126
118 <li tal:condition="python:request.user.username != 'anonymous'" class="submenu"> 127 <li tal:condition="python:request.user.username != 'anonymous'" class="submenu">
119 <p class="label"><b tal:replace="request/user/username">username</b></p> 128 <p class="label"><b tal:replace="python:request.user.username.plain(escape=1)">username</b></p>
120 <ul> 129 <ul>
121 <li> 130 <li>
122 <a href="#" 131 <a href="#"
123 tal:attributes="href python:request.indexargs_url('issue', { 132 tal:attributes="href python:request.indexargs_url('issue', {
124 '@sort': '-activity', 133 '@sort': '-activity',
143 </li> 152 </li>
144 <li class="" 153 <li class=""
145 tal:condition="python:request.user.hasPermission('View', 'query')"> 154 tal:condition="python:request.user.hasPermission('View', 'query')">
146 <span i18n:translate=""><b>Your Queries</b> (<a class="nomargin" href="query?@template=edit">edit</a>)</span><br/> 155 <span i18n:translate=""><b>Your Queries</b> (<a class="nomargin" href="query?@template=edit">edit</a>)</span><br/>
147 <ul tal:repeat="qs request/user/queries"> 156 <ul tal:repeat="qs request/user/queries">
148 <li><a tal:attributes="href string:${qs/klass}?${qs/url}&@dispname=${qs/name}" 157 <li><a href="#" tal:attributes="href string:${qs/klass}?${qs/url}&@dispname=${qs/name/url_quote}"
149 tal:content="qs/name">link</a></li> 158 tal:content="qs/name">link</a></li>
150 </ul> 159 </ul>
151 </li> 160 </li>
152 <li class="" 161 <li class=""
153 tal:condition="python:request.user.hasPermission('View', 'user')"> 162 tal:condition="python:request.user.hasPermission('View', 'user')">

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