Commit Graph

97 Commits

Author SHA1 Message Date
ryanbrandenburg a8dbf6a255 * Add logging for other IAntiforgery public methods 2016-02-17 11:57:50 -08:00
Ajay Bhargav Baaskaran 220479c1a1 [Fixes #30] Updated UID generation in DefaultClaimUidExtractor 2016-02-16 10:14:52 -08:00
Ryan Nowak ac107b5371 Make IsRequestValid check HTTP method
This code was popping up everywhere this method is called. Seems bad to
duplicate it. Really what the caller wants to know is 'is the request
valid or a potential CSRF exploit?'. This gets the API closer to that.
2016-02-12 16:52:25 -08:00
Doug Bunting c85badcf71 Fix bad merge
- not exactly logging at the right spot in `GetAndStoreTokens()`
- test helpers were creating two separate `ServiceCollections`
 - also didn't compile!
2016-02-09 16:43:01 -08:00
Doug Bunting 73695fc443 Serialize cookie token at most once
- #23 part 3
- `Get[AndStore]Tokens()` would deserialize cookie token from request even if `IsRequestValidAsync()` already had
- `GetAndStoreTokens()` serialized an old (never saved) cookie token once and a new one twice

- refactor serialization from `DefaultAntiforgeryTokenStore` to `DefaultAntiforgery`
 - divide responsibilities and ease overall fix
- above refactoring took `IAntiforgeryContextAccessor` responsibilities along to `DefaultAntiforgery` as well
 - store all tokens in `IAntiforgeryContextAccessor` to avoid repeated (de)serializations
 - remove `AntiforgeryTokenSetInternal`

nits:
- bit more parameter renaming to `httpContext`
- remove argument checks in helper methods
 - did _not_ do a sweep through the repo; just files in this PR
2016-02-09 15:29:04 -08:00
ryanbrandenburg c8a9ecc0c1 * Add logging to Antiforgery 2016-02-09 09:27:51 -08:00
Doug Bunting 08cf13b870 Remove `ValidateTokens()` from `IAntiforgery`
- `IAntiforgery` does not expose a way to get an invalid `AntiforgeryTokenSet`
2016-02-05 12:16:10 -08:00
Ryan Nowak 33e3001d53 Remove GetHtml
It's being moved to MVC
2016-02-04 11:22:26 -08:00
Ryan Nowak 3a2d09b066 Move exceptions from the store to the facade
My earlier change to add TryValidateRequestAsync didn't go far enough,
because the store will still throw when the tokens aren't present. This
change is to make the store just return null tokens in these cases, and
move the exceptions to DefaultAntiforgery.
2016-02-04 11:11:45 -08:00
Doug Bunting 705c080d3b Move Antiforgery implementation details to `.Internal`
- leave `IAntiforgery`, `IAntiforgeryAdditionalDataProvider` and related bits behind
2016-02-03 15:39:33 -08:00
Ryan Nowak 48ee352022 Add form and header name to token set 2016-02-03 14:28:25 -08:00
Ryan Nowak 20140c4c15 Adds a IsRequestValidAsync method
Some other misc cleanup
- docs for IAntiforgeryTokenGenerator
- Add HttpContext parameter where to all IAntiforgeryGenerator methods
- rename parameters on DefaultAntiforgery
2016-02-03 08:08:30 -08:00
Doug Bunting 0ddfa5f0d8 Pool `MemoryStream`, `BinaryReader`, `BinaryWriter`, and `SHA256` instances
- #23 part 2
- reduce `byte[]` and `char[]` allocations because all have internal buffers
 - fortunately, only `MemoryStream` has an unbounded buffer
2016-02-02 16:56:11 -08:00
Doug Bunting 492c0798b1 Anything but `HtmlContentBuilder`
- #23 part 1
2016-02-02 08:51:02 -08:00
N. Taylor Mullen 9c9543dde4 Rename AspNet 5 file contents.
See https://github.com/aspnet/Announcements/issues/144 for more information.
2016-01-22 12:24:22 -08:00
N. Taylor Mullen bc0d5528a3 Rename AspNet 5 folders and files.
See https://github.com/aspnet/Announcements/issues/144 for more information.
2016-01-22 12:24:19 -08:00
Ajay Bhargav Baaskaran 80fa2908bd Throwing custom AntiforgeryException for token validation failure scenarios 2016-01-07 15:12:55 -08:00
Hao Kung 0eec60b0ac React to OptionsModel => Options 2015-12-21 14:54:54 -08:00
Ryan Nowak 1c0996c625 Add a sample demonstrating Antiforgery with AJAX 2015-12-17 13:29:45 -08:00
Ryan Nowak bf6406bc2a PR feedback 2015-12-16 12:48:03 -08:00
Ryan Nowak 3280ff6ac5 Add Header support
This change adds support for retrieving an antiforgery CSRF token via a
configurable header in addition to the form field. This helps with doing
ajax requests in a 1st-party SPA when using cookie auth, and is similar to
functionality provided by a bunch of different frameworks.

In this change there's also a bunch of churn due to avoiding the term
'form' in favor of 'request' and 'session' in favor of 'cookie'. Where
code and error message now mention 'form' they specifically mean
form-encoded content.
2015-12-15 14:18:09 -08:00
Pranav K 463e8f9473 React to HtmlAbstractions namespace rename 2015-12-02 10:30:01 -08:00
Doug Bunting 6a9b38db77 Return an `IHtmlContent` from `IAntiforgery.GetHtml()`
- part of aspnet/Mvc#3123
- no longer forces caller to wrap the return value in an `HtmlString`

nit: don't HTML encode the word "hidden"
2015-11-25 09:44:54 -08:00
ryanbrandenburg c82ac5e61f * Return old cookie token 2015-11-12 11:52:39 -08:00
Cesar Blum Silveira ff3c8023a0 Merge branch 'release' into dev 2015-11-03 13:34:38 -08:00
Cesar Blum Silveira 391086e3ce Strong name Microsoft.AspNet.Antiforgery. 2015-11-03 12:51:41 -08:00
Chris R 84cfe5640d React to WebEncoders changes. 2015-10-30 11:45:48 -07:00
Pranav K c7dc5ab7f0 Switching to generations TFMs 2015-10-22 00:23:06 -07:00
Pranav K 7a0068ede2 Renaming Microsoft.Framework.* -> Microsoft.Extensions.* 2015-10-03 15:44:46 -07:00
Pranav K e0ec2da711 Replacing NotNull with thrown exceptions 2015-09-11 17:07:52 -07:00
Pranav K 3240ef37e1 Adding NeutralResourcesLanguageAttribute 2015-09-10 16:25:41 -07:00
Hao Kung f5c8bf09e2 React to options 2015-09-02 15:28:52 -07:00
Chris R 7bb59a287c React to string[] -> StringValues changes. 2015-08-28 14:23:17 -07:00
Chris R 87d4033226 #10 React to CoreCLR Cryptography pacakge changes, remove transitive dependencies. 2015-08-11 14:29:37 -07:00
Pranav K 3bed6fce9c Reacting to DI changes 2015-08-11 12:53:18 -07:00
unknown b922d816be Fix aspnet/Mvc#2749 - fail gracefully with non-form content
This change will report a more specific error when antiforgery is used
with non-form content than "invalid content type".
2015-08-06 10:29:16 -07:00
Ryan Nowak 9bcecf3994 Fix #5 - better error message for missing tokens
This fix changes the model for error messaging in antiforgery. Now only
the token store will report a detailed error message including the names
of form field and cookie. Other components will give more generic errors
and assume that this was handled by the token store.

This way you still see an error if the user creates a token store that
doesn't throw, but it's a generic error that doesn't give incorrect
information.
2015-08-06 08:48:47 -07:00
Troy Dai fbe9dc58e8 Update CoreCLR versions 2015-08-04 10:15:20 -07:00
Victor Hurdugaci 77d1b47377 Add repository information to project files 2015-07-01 20:35:25 -07:00
Ryan Nowak e13e707503 CR feedback and naming/resource cleanup 2015-06-25 13:25:52 -07:00
Ryan Nowak b3e92da7d8 Add an IAntiforgery interface and simplify API 2015-06-24 15:56:03 -07:00
Ryan Nowak 9eeb1de68f Use DI for all Antiforgery services
This change makes it possible to replace all of the various
IAntiforgery*** extensibility points via DI.

changes:
- Move functionality out of AntiforgeryWorker into Antiforgery
- Move services to DI (instead of constructed by Antiforgery)
- Cleanup how application/cookie-name is computed
- Merge IAntiforgeryTokenGenerator & IAntiforgeryTokenValidator
- Unseal classes
- Fix use of options in services
- Misc test cleanup
2015-06-23 12:13:01 -07:00
Ryan Nowak b474ef9b23 Add sample of using Antiforgery outside of MVC 2015-06-10 14:53:44 -07:00
Ryan Nowak 355a2b0a78 Add an IServiceCollection extensions 2015-06-10 12:52:20 -07:00
Ryan Nowak e789e82d3d Add package description 2015-06-10 12:24:22 -07:00
Ryan Nowak 3dc2663c35 Code dump of Antiforgery code 2015-06-10 12:13:30 -07:00
Ryan Nowak 2c3544c348 Add project structure 2015-06-07 16:57:21 -07:00