diff --git a/protected_node.fork.inc b/protected_node.fork.inc
index e2fcfd2..8119b9f 100644
--- a/protected_node.fork.inc
+++ b/protected_node.fork.inc
@@ -167,6 +167,12 @@ function protected_node_enter_any_password() {
  * Verify that the user entered the correct password.
  */
 function protected_node_enter_any_password_validate($form, &$form_state) {
+  // Limit amount reasoning is documented in the
+  // core user_login_authenticate_validate function.
+  if(!flood_is_allowed('failed_protected_node_attempt_ip', variable_get('user_failed_login_ip_limit', 50), variable_get('user_failed_login_ip_window', 3600))) {
+    form_set_error('password',  t('Sorry, too many failed password attempts from your IP address. This IP address is temporarily blocked. Try again later.'));
+    return;
+  }
   // Note that global password cannot work here since we couldn't know where
   // to send the user otherwise.
   $nids = protected_node_get_nids_from_protected_pages_parameter();
@@ -185,6 +191,7 @@ function protected_node_enter_any_password_validate($form, &$form_state) {
     ->fetchField();
 
   if (empty($nid)) {
+    flood_register_event('failed_protected_node_attempt_ip', variable_get('user_failed_login_ip_window', 3600));
     form_set_error('password', t('Incorrect password!'));
   }
   else {
diff --git a/protected_node.redirect.inc b/protected_node.redirect.inc
index 422677e..72912bd 100644
--- a/protected_node.redirect.inc
+++ b/protected_node.redirect.inc
@@ -151,6 +151,12 @@ function protected_node_enterpassword() {
  * Verify that the user entered the correct password.
  */
 function protected_node_enterpassword_validate($form, &$form_state) {
+  // Limit amount reasoning is documented in the
+  // core user_login_authenticate_validate function.
+  if(!flood_is_allowed('failed_protected_node_attempt_ip', variable_get('user_failed_login_ip_limit', 50), variable_get('user_failed_login_ip_window', 3600))) {
+    form_set_error('password',  t('Sorry, too many failed password attempts from your IP address. This IP address is temporarily blocked. Try again later.'));
+    return;
+  }
   // @todo We do not want to check the global password if there is a local
   // password (i.e. extract local password instead of comparing).
   // @todo The protected_node_nid parameter should be extracted from the
@@ -203,6 +209,7 @@ function protected_node_enterpassword_validate($form, &$form_state) {
     }
 
     if (empty($nid)) {
+      flood_register_event('failed_protected_node_attempt_ip', variable_get('user_failed_login_ip_window', 3600));
       form_set_error('password', t('Incorrect password!'));
     }
   }
