mirror of
https://github.com/nkanaev/yarr.git
synced 2025-05-24 00:33:14 +00:00
simple csrf protection
This commit is contained in:
parent
fa0237b546
commit
d6c2ba5812
@ -2,9 +2,12 @@
|
|||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
var api = function(method, endpoint, data) {
|
var api = function(method, endpoint, data) {
|
||||||
|
var headers = {'Content-Type': 'application/json'}
|
||||||
|
if (['get', 'post', 'put'].indexOf(method) !== -1)
|
||||||
|
headers['x-requested-by'] = 'yarr'
|
||||||
return fetch(endpoint, {
|
return fetch(endpoint, {
|
||||||
method: method,
|
method: method,
|
||||||
headers: {'Content-Type': 'application/json'},
|
headers: headers,
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -12,7 +15,7 @@
|
|||||||
var json = function(res) {
|
var json = function(res) {
|
||||||
return res.json()
|
return res.json()
|
||||||
}
|
}
|
||||||
|
|
||||||
var param = function(query) {
|
var param = function(query) {
|
||||||
if (!query) return ''
|
if (!query) return ''
|
||||||
return '?' + Object.keys(query).map(function(key) {
|
return '?' + Object.keys(query).map(function(key) {
|
||||||
|
@ -43,6 +43,10 @@ func (h *Handler) Start() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func unsafeMethod(method string) bool {
|
||||||
|
return method == "POST" || method == "PUT" || method == "DELETE"
|
||||||
|
}
|
||||||
|
|
||||||
func (h Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
func (h Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
||||||
route, vars := getRoute(req)
|
route, vars := getRoute(req)
|
||||||
if route == nil {
|
if route == nil {
|
||||||
@ -51,6 +55,10 @@ func (h Handler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if h.requiresAuth() && !route.manualAuth {
|
if h.requiresAuth() && !route.manualAuth {
|
||||||
|
if unsafeMethod(req.Method) && req.Header.Get("X-Requested-By") != "yarr" {
|
||||||
|
rw.WriteHeader(http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
if !userIsAuthenticated(req, h.Username, h.Password) {
|
if !userIsAuthenticated(req, h.Username, h.Password) {
|
||||||
rw.WriteHeader(http.StatusUnauthorized)
|
rw.WriteHeader(http.StatusUnauthorized)
|
||||||
return
|
return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user