luci-base: protect simpleforms with CSRF tokens
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
This commit is contained in:
parent
38a9993bd1
commit
3f29078fb9
2 changed files with 10 additions and 0 deletions
|
@ -869,6 +869,15 @@ local function _form(self, ...)
|
|||
local cbi = require "luci.cbi"
|
||||
local tpl = require "luci.template"
|
||||
local http = require "luci.http"
|
||||
local disp = require "luci.dispatcher"
|
||||
|
||||
if http.formvalue("cbi.submit") == "1" and
|
||||
http.formvalue("token") ~= disp.context.urltoken.stok
|
||||
then
|
||||
http.status(403, "Forbidden")
|
||||
luci.template.render("csrftoken")
|
||||
return
|
||||
end
|
||||
|
||||
local maps = luci.cbi.load(self.model, ...)
|
||||
local state = nil
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
<form method="post" enctype="multipart/form-data" action="<%=REQUEST_URI%>">
|
||||
<div>
|
||||
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
|
||||
<input type="hidden" name="token" value="<%=token%>" />
|
||||
<input type="hidden" name="cbi.submit" value="1" />
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
Loading…
Reference in a new issue