[wp-hackers] Rethinking check_admin_referer()

Mark Jaquith mark.wordpress at txfx.net
Mon Apr 17 08:01:10 GMT 2006

On Apr 17, 2006, at 2:37 AM, Matt Mullenweg wrote:

>> 1) function wp_secure_form($key='') { }
>> This function would echo out a hidden from input with an md5 hash  
>> computed on (a) the database password, (b) the userid, and (c) the  
>> optional key.  This would give us a hash that is unique to the  
>> specific WP user on that install, and optionally, specific to the  
>> particular task being performed.  For example, for deleting a  
>> post, you could do wp_secure_form('delete_post_' . $post_id); and  
>> it would be locked down to the install, the user, the "delete"  
>> action, and that specific post.
> Unfortunately this doesn't work, because it's trivial to fetch the  
> page and grab the key/nonce before submitting the malicious request.

How could this be done without <script> injection (a security problem  
in its own right)?  It may just be that it is 4am, but without  
injection of a malicious script, in which case the security breach  
has already occurred, I can't see how you are going to load the page  
as the authenticated user and extract the key.  There's probably a  
"oh, duh" answer to this, but I just can't see it now.

Mark Jaquith

More information about the wp-hackers mailing list