防止文本转义/添加观察者到Jira票证

时间:2014-08-06 19:51:35

标签: python django jira

所以,我已经从几个来源一起攻击了这个,所以如果我完全采用错误的方式,我欢迎反馈。我也觉得这是不可能的,因为它可能是一种旨在防止恶意使用此行为的安全检查。

但无论如何:

我在Django网站上有一个表单,人们可以请求更改我们其中一个项目的名称,这应该会自动创建一个jira票证。这是以下形式:

<form target="_blank" action='http://issues.dowjones.net/secure/CreateIssueDetails!init.jspa' method='get' id='create_jira_ticket_form'>

    <a id='close_name_change_form' class="close">&times;</a>
    <label for="new_name">New name: </label>
    <input id="new_name" type="text" name="new_name" value="{{item.name}}">
    <input type="hidden" value="10517" name="pid">
    <input type="hidden" value="3" name="issuetype">
    <input type="hidden" value="5" name="priority">
    <input type="hidden" value="Change name of {{item.name}} to " name="summary" id='summary'>
    <input type="hidden" value="{{request.user}}" name="reporter">
    <input type="hidden" value="user123" name="assignee">
    <input type="hidden" value="" name="description" id="description">
    <input id='name_change_submit' class="btn btn-primary btn-sm" type="submit" value="Create JIRA ticket">


</form>

然后我有一个小JS用新值修改字段:

$(document).ready(function(){

  $('#create_jira_ticket_form').submit(function(){

    var watchers = ' \[\~watcher1\] \[\watcher2\]';

    var new_name = $('#new_name').val();

    var summary = $('#summary').val();

    $('#summary').val(summary + new_name);

    $('#description').val(summary + new_name + watchers);

  })

}) 

它非常接近工作,但说明字段已转义,使其看起来像:

将OLDNAME的名称更改为NEWNAME%5B%7Ewatcher1t%5D%5B%7Ewatcher2%5D

哪个不太有帮助。如何保持原样,以便添加观察者?

1 个答案:

答案 0 :(得分:0)

当您的表单对表单中的字段和值进行编码时会发生这种情况。

你可以通过这个简单的片段试试这个:

console.log($('form').serialize());
你应该看到像

这样的东西
description=ejdd+%5B~watcher1%5D+%5Bwatcher2%5D 

为了防止这种情况发生,您应该将method='get'更改为method='post'

编码的发生是因为它是HTTP的一部分,read here why 您还可以阅读the spec paragraph

  

17.13.3处理表单数据