Edgewall Software

Ticket #4122 (closed defect: fixed)

Opened 21 months ago

Last modified 21 months ago

XmlRpcPlugin does not work with Trac 0.10.1 due to CSRF fix.

Reported by: Shun-ichi Goto <shunichi.goto@…> Owned by: jonas
Priority: normal Milestone: 0.10.2
Component: general Version: 0.10.1
Severity: normal Keywords: CSRF form_token xmlrpc
Cc: shunichi.goto@…

Description (last modified by cboos) (diff)

The form_token cookie introduced in Trac 0.10.1 prevents XML-RPC access because it cannot get valid cookie and all the POST request is checked before handler is called. So TracHacks:XmlRpcPlugin does not work at all.

For local workaround, I patched to exclude content-type: text/xml but it is not considered for security aspects. What is the right way?

  • main.py

    old new  
    221221        # Process the request and render the template 
    222222        try: 
    223223            try: 
     224                ctype = req.get_header('Content-Type') 
     225                if ctype: 
     226                    ctype = ctype.split(';')[0].strip().lower() 
    224227                # Protect against CSRF attacks. 
    225228                if (req.method == 'POST' and 
     229                    ctype != 'text/xml' and 
    226230                    req.args.get('__FORM_TOKEN') != req.form_token): 
    227231                    raise TracError('Missing or invalid form token. ' 
    228232                                    'Do you have cookies enabled?') 

Attachments

Change History

Changed 21 months ago by cboos

  • keywords CSRF form_token xmlrpc added
  • version changed from devel to 0.10.1
  • description modified (diff)
  • milestone set to 0.10.2

(added 0.10.1 version)

Changed 21 months ago by jonas

  • status changed from new to closed
  • resolution set to fixed

Thanks, I've committed a modified version of the patch to trunk and 0.10-stable, see r4243 (trunk) and r4244 (0.10-stable).

Add/Change #4122 (XmlRpcPlugin does not work with Trac 0.10.1 due to CSRF fix.)

Author



Change Properties
<Author field>
Action
as closed
Next status will be 'reopened'
 
Note: See TracTickets for help on using tickets.