summaryrefslogtreecommitdiff
path: root/web/lib/aur.inc.php
diff options
context:
space:
mode:
authorcanyonknight <canyonknight@gmail.com>2012-06-23 14:40:11 -0400
committerLukas Fleischer <archlinux@cryptocrack.de>2012-06-24 10:59:23 +0200
commit2c93f0a98f0f6380fd07ea17fd16afa2c6e4925b (patch)
treedc5fd78a8cb46cd1475b45eeaa6544fbdeb23280 /web/lib/aur.inc.php
parentbfb25807c49d3f35cdce91947a442455e1940392 (diff)
Implement token system to fix CSRF vulnerabilities
Specially crafted pages can force authenticated users to unknowingly perform actions on the AUR website despite being on an attacker's website. This cross-site request forgery (CSRF) vulnerability applies to all POST data on the AUR. Implement a token system using a double submit cookie. Have a hidden form value on every page containing POST forms. Use the newly added check_token() to verify the token sent via POST matches the "AURSID" cookie value. Random nature of the token limits potential for CSRF. Signed-off-by: canyonknight <canyonknight@gmail.com> Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
Diffstat (limited to 'web/lib/aur.inc.php')
-rw-r--r--web/lib/aur.inc.php10
1 files changed, 10 insertions, 0 deletions
diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php
index 6bc36ac..8b9f31e 100644
--- a/web/lib/aur.inc.php
+++ b/web/lib/aur.inc.php
@@ -77,6 +77,16 @@ function check_sid($dbh=NULL) {
return;
}
+# Verify the supplied token matches the expected token for POST forms
+#
+function check_token() {
+ if (isset($_POST['token'])) {
+ return ($_POST['token'] == $_COOKIE['AURSID']);
+ } else {
+ return false;
+ }
+}
+
# verify that an email address looks like it is legitimate
#
function valid_email($addy) {