The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Implementing CSRF Protection in modifications
With the new version released today for vBulletin 3.6.10 and 3.7.0 RC4, a new protection against Cross Site Request Forgery (CSRF) has been introduced. This new protection might influence the coding in modifications. Scott MacVicar took the time to compile a short explanation on this new protection for the coders on vBulletin.org: Changes for CSRF protection with third party modifications Cross Site Request Forgery (CSRF) involves taking advantage of the stateless nature of HTTP, there are no ways to ensure the exact origin of a request, its also not possible to detect what was actually initiated by a user and what was forced by a third party script. A token was added to the latest version of each of the vBulletin products, with the release of 3.6.10 and 3.7.0 RC4 it is no longer possible to submit a POST request directly without passing in the known token. The addition of a security token for each POST request removes the ability for a remote page to force a user to submit an action. At the moment this protection will only apply to vBulletin files and third party files will need to opt into this protection and add the appropriate hidden field. This was done to preserve backwards compatibility. Adding Protection to your own files To opt your entire file into CSRF protection the following should be added to the top of the file under the define for THIS_SCRIPT. PHP Code:
If this value is set to false then all CSRF protection is removed for the file, this is appropriate for something that intentionally accepts remote POST requests. You should always add this to your file, even if you don't think the script is ever going to receive POST requests. An absence of this defined constant within your files will result in the old style referrer checking being performed. Template Changes The following should be added to all of the forms which POST back to vBulletin or a vBulletin script. This will automatically be filled out with a 40 character hash that is unique to the user. Code:
<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" /> Exempting Certain Actions It may be appropriate to exempt a particular action from the CSRF protection, in this case you can add the following to the file. PHP Code:
If the skip list needs to be changed at runtime is it available within the registry object, using the init_startup hook the following code would be used to exempt 'example.php?do=action_three'. PHP Code:
|
#132
|
||||
|
||||
I had the same trouble this took care of it -
Open the template "onetouchban" in Styles and Templates/edit templates - Find Code:
<form action="misc.php" method="post" name="spamconfirm" id="spamconfirm"> Code:
<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" /> No more errors - Remember to turn off the IP ban for your test run or you may ban your own IP!! I also had a security token pop up in a style that has not been updated with the onset of daylight savings in some parts of the world. The error occurs when the time trys to adjust to daylight savings on profile.php?do=dst. This is incorperated into the footer template and the security token needs to go on the nesxt line after - Code:
<input type="hidden" name="s" value="$session[sessionhash]" /> |
#133
|
|||
|
|||
Has anyone gotten this security token error when you click on "Go Advanced" on the QuickReply editor?
If so, what template did you have to edit, (or what form in what template) to fix it?? EDIT - Never mind. I found it. I reverted the Showthread template and it's now fixed. |
#134
|
||||
|
||||
Hi guys, I have a second site that uses a small bit of code at the top to search my forum. basically you type the search term on my site, hit search and it feeds that info to the search page on my forum and opens a new window on the forum with the results.
It works fine with the user not logged in to the forum when searching from the other site but when the user is also logged in forum and is then also searching from the other site I get the error "Your submission could not be processed because a security token was invalid." I tried commenting out the lines <input type="hidden" name="s" value="$session[sessionhash]" /> <input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" /> from my search_forums template but this made no difference This is my code <div class="span-8 push-4 last margin_bottom"> <form id="form" action="http://www.******.com/forum/search.php" method="post" name="search" target="_blank"> <input type="hidden" name="s" value="$session[sessionhash]" /> <input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" /> <input type="hidden" name="do" value="process"/> <input type="hidden" name="quicksearch" value="1"/> <input type="hidden" name="showposts" value="1"/> <label for="query">Search</label> <input type="text" id="search_field" class="text" name="query" size="18" value="" /> <input type="image" src="/**********/templates/******/images/search.gif" /> </div> Any ideas on how to work around on this? |
#135
|
|||
|
|||
Yeah Exactly same here. This is crap and not good. I wish more help was around I see people asking to explain it 5th grade style and they are ignored. GRRR how many people does it take to scream before somethings done???
Quote:
|
#136
|
||||
|
||||
Run the following query and you should see a list of possible templates that need editing - Then you have to edit each template for each installed style manually:
Code:
SELECT templateid , title , styleid FROM template WHERE template_un NOT LIKE '%<input type="hidden" name="s" value="$session[sessionhash]" />%<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" />%' AND template_un LIKE '%<input type="hidden" name="s" value="$session[sessionhash]" />%' ORDER BY title ASC, styleid ASC; Hope this helps - but if you are in the position to hire someone - perhaps you might post a thread in the Paid Requests section or check out my design site Jacquii. Quote:
|
#137
|
|||
|
|||
I have reciently upgraded to the lastest vb, I am now having an issue with a "security token" I was redirected to this perticular post by vb support.. I am using a "Form" created by Elricstorm called "Elricstorm's World of Warcraft Recruitment Form" I have modified the form to be up to date with the changes in the game, everything works fine all the changes show up fine, however when attempting to "post" the form I get the security error, I am in no way a programmer, so my question is what Do I fix and where...? If this has already been answered somewhere pointing me there would be great, I searched but came up[ empty.
I will try and give you the code here.. If anyone can help, and you need more data, please let me know... Thanks a ton.. this is from the top of the form... PHP Code:
|
#138
|
|||
|
|||
I'm not sure if this has been suggested yet and I don't care to search through all 10 pages of this to find out.
This is simply what I did to fix my Security Token issues for my custom theme for my board. Go to your Administrator Control Panel, then choose: Styles & Templates >> Search in Templates Inside there you will use the "Find and Replace in Templates" function. Where it says "Search in Style" you will choose the custom style that is giving you problems. Where it says "Search for Text" put: Code:
<input type="hidden" name="s" value="$session[sessionhash]" /> Code:
<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" /> <input type="hidden" name="s" value="$session[sessionhash]" /> And finally choose "Yes" for the "Case-Insensitive" option. (Just to be sure. =D) Click Find and then keep hitting next till it updates the skins. That's what I did and now it works like a charm. =D |
#139
|
|||
|
|||
Ummm maybe someone should tell me exactly WHERE to put all this stuff... this is like reading chinese when i cant even read symbols and make out what they mean.. only thing now im worrying about is missing security tokens think i screwed up big time and lost it all and now i may have to restart over...
but will this fix all token issues or certain areas? im trying to figure out why im having this one in my flashchat... |
#140
|
||||
|
||||
Quote:
--------------- Added [DATE]1232445952[/DATE] at [TIME]1232445952[/TIME] --------------- Here's a list with (default) templates missing the hidden-field for the securitytoken. These where found in a 3.7.2 version which is updated from 3.5.4 till 3.7.2. The number in front of the template name are the number of fields to be added in total: 2x calenderjump 1x FAQ 2x FORUMDISPLAY 1x forumjump 1x JOINREQUESTS 1x moderation_filter 1x moderation_posts 1x moderation_threads 1x pm_messagelist 6x SHOWTHREAD 1x tag_cloud_page 1x threadadmin_easyspam_skipped_prune 1x WHOSONLINE Open each of these templates, search for: HTML Code:
<input type="hidden" name="s" value="$session[sessionhash]" />
HTML Code:
<input type="hidden" name="securitytoken" value="$bbuserinfo[securitytoken]" /> <input type="hidden" name="s" value="$session[sessionhash]" /> |
#141
|
|||
|
|||
Shouldn't this be posted in vb category and not programming?
Because you can just use this with vB, it has nothing to do with normal "programming". |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|