Hi Caleb, Caleb James DeLisle wrote: > I don't want this proposal to die because of unnecessary noise which I > introduced, > I have thought about it and I am in agreement with the general idea of > sending the user a hash which > must be returned with the post in order for the data to be saved. > > I don't like adding code to xwiki-core so I suggest this be made into a > component. > We would need 2 functions: > String getToken() > boolean isTokenValid(String token) >
> getToken uses org.xwiki.bridge.DocumentAccessBridge.getCurrentUser() to get > the user who called it > and the user name is stored in a HashMap of <String, String> with a random > string of text. > > If getToken finds a token already in the map, it returns that token (so it > may be called multiple times > in the generation of a page) So the token is the same for consecutive (GET) requests coming from the same user? > > isTokenValid checks the current user against the token then removes the entry > from the HashMap so the token > may not be reused. What happens if the user opens in edit mode two different pages? Isn't the second save invalidated by the first save? Thanks, Marius > > If a configuration parameter is specified to disable the component, getToken > returns "" and isTokenValid > returns true. > > WDYT? > > Caleb > > > Caleb James DeLisle wrote: >> Sergiu Dumitriu wrote: >>> On 03/10/2010 07:44 PM, Caleb James DeLisle wrote: >>>> Take a look at the "sammy is my hero" worm, myspace sent a hash to the >>>> user like the one you propose, >>>> the worm made the required get request to get the hash, then made the post >>>> along with the hash. >>>> What prevents javascript from opening the page with the hash in an iframe >>>> and then reading in the iframe >>>> to get the hash, then creating a form with the required data and posting >>>> it to the save action? >>>> >>>> If we were to combine a requirement for post requests with checking of the >>>> referrer header, then we >>>> would block links, forms and javascript based attacks leaving only an >>>> attack through older versions >>>> of flash which support referrer forgery and at this point the difficulty >>>> of the attack becomes such that >>>> we need to consider a wider array of attack vectors. >>> Sammy also required that XSS is enabled. >>> >>> Protecting from attacks originating in the wiki is kind of impossible at >>> the moment, since JS can be inserted anywhere, and there's no (nice) way >>> to prevent attacks from JS inside the application. As long as JS can be >>> inserted, an attacker can do all the steps that the client would do to >>> perform an action. >>> >>> The secret token works as a prevention mechanism when the attack comes >>> from another site because the browser security model prevents the attack >>> code to read the form. >> I just did a few tests on iframes and I was wrong, they do have good same >> origin policy. >> >> Caleb >> >>>> Caleb >>>> >>>> >>>> Alex Busenius wrote: >>>>> Unfortunately, using POST requests instead of GET requests is not >>>>> enough. It will not prevent attacks that use forms and/or JavaScript to >>>>> generate POST requests. >>>>> >>>>> Alex >>>>> >>>>> >>>>> On 03/09/2010 02:48 PM, Caleb James DeLisle wrote: >>>>>> I had thought about proposing this myself but decided against it because >>>>>> it seems >>>>>> to me like a workaround for problems which can be solved in other ways. >>>>>> >>>>>> Suppose we were to add a check to the actions which alter data which >>>>>> made sure the request method >>>>>> was 'post' and made it configurable in one of the configuration files? >>>>>> We would have >>>>>> to look over the default skins for incorrect links and leave the >>>>>> configuration >>>>>> option off by default for backward compatibility at least until the next >>>>>> major version >>>>>> but we could provide wiki operators the ability to prevent CSRF. >>>>>> >>>>>> Caleb >>>>>> >>>>> _______________________________________________ >>>>> devs mailing list >>>>> [email protected] >>>>> http://lists.xwiki.org/mailman/listinfo/devs >>>>> >>>> _______________________________________________ >>>> devs mailing list >>>> [email protected] >>>> http://lists.xwiki.org/mailman/listinfo/devs >>>> >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs >> > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

