final class CSRF extends AnyRef
Middleware to avoid Cross-site request forgery attacks. More info on CSRF at: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
This middleware is modeled after the double submit cookie pattern: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet#DoubleSubmit_Cookie
When a user authenticates, embedNew is used to send a random CSRF value as a cookie. (Alterntively,
an authenticating service can be wrapped in withNewToken). Services protected by the validaed
middleware then check that the value is prsent in both the header headerName and the cookie cookieName.
Due to the Same-Origin policy, an attacker will be unable to reproduce this value in a
custom header, resulting in a 403 Forbidden response.
- Source
- CSRF.scala
- Alphabetic
- By Inheritance
- CSRF
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- def ->[B](y: B): (CSRF, B)
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
- val cookieName: String
-
def
embedNew(res: MaybeResponse): Task[Response]
Embed a token into a response *
- def ensuring(cond: (CSRF) ⇒ Boolean, msg: ⇒ Any): CSRF
- def ensuring(cond: (CSRF) ⇒ Boolean): CSRF
- def ensuring(cond: Boolean, msg: ⇒ Any): CSRF
- def ensuring(cond: Boolean): CSRF
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
- def formatted(fmtstr: String): String
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- val headerName: String
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
validate(predicate: (Request) ⇒ Boolean = _.method.isSafe): Middleware[Request, MaybeResponse, Request, MaybeResponse]
Constructs a middleware that will check for the csrf token presence on both the proper cookie, and header values.
Constructs a middleware that will check for the csrf token presence on both the proper cookie, and header values.
If it is a valid token, it will then embed a new one, to effectively randomize the complete token while avoiding the generation of a new secure random Id, to guard against [BREACH](http://breachattack.com/)
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
def
withNewToken: Middleware[Request, MaybeResponse, Request, MaybeResponse]
Middleware to embed a csrf token into routes that do not have one.
Middleware to embed a csrf token into routes that do not have one. *
- def →[B](y: B): (CSRF, B)