diff --git a/admin/settings/security.php b/admin/settings/security.php
index 7ab02e161a6..4f2a0388496 100644
--- a/admin/settings/security.php
+++ b/admin/settings/security.php
@@ -67,6 +67,7 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
$temp->add(new admin_setting_configcheckbox('cookiehttponly', get_string('cookiehttponly', 'admin'), get_string('configcookiehttponly', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('regenloginsession', get_string('regenloginsession', 'admin'), get_string('configregenloginsession', 'admin'), 1));
$temp->add(new admin_setting_configtext('excludeoldflashclients', get_string('excludeoldflashclients', 'admin'), get_string('configexcludeoldflashclients', 'admin'), '10.0.12', PARAM_TEXT));
+ $temp->add(new admin_setting_configcheckbox('loginpasswordautocomplete', get_string('loginpasswordautocomplete', 'admin'), get_string('loginpasswordautocomplete_help', 'admin'), 0));
$ADMIN->add('security', $temp);
diff --git a/blocks/login/block_login.php b/blocks/login/block_login.php
index d203c4b4633..44b174b1f95 100644
--- a/blocks/login/block_login.php
+++ b/blocks/login/block_login.php
@@ -49,7 +49,12 @@ class block_login extends block_base {
$this->content->text .= '';
$this->content->text .= '
';
- $this->content->text .= '
';
+
+ if (!empty($CFG->loginpasswordautocomplete)) {
+ $this->content->text .= '';
+ } else {
+ $this->content->text .= '';
+ }
$this->content->text .= '';
diff --git a/lang/en_utf8/admin.php b/lang/en_utf8/admin.php
index 7d6a64a39bc..915064e1247 100644
--- a/lang/en_utf8/admin.php
+++ b/lang/en_utf8/admin.php
@@ -493,6 +493,8 @@ $string['location'] = 'Location';
$string['locationsettings'] = 'Location settings';
$string['log'] = 'Logs';
$string['loginhttps'] = 'Use HTTPS for logins';
+$string['loginpasswordautocomplete'] = 'Prevent password autocompletion on login form.';
+$string['loginpasswordautocomplete_help'] = 'Having this off will let users save their account password in their browser. Switching this setting on will result in your site no longer following XHTML strict validation rules.';
$string['loglifetime'] = 'Keep logs for';
$string['longtimenosee'] = 'Unsubscribe users from courses after';
$string['longtimewarning'] = 'Please note that this process can take a long time.';
diff --git a/login/index_form.html b/login/index_form.html
index c1ff0404ed0..620fe815f42 100644
--- a/login/index_form.html
+++ b/login/index_form.html
@@ -35,7 +35,7 @@ if ($show_instructions) {