Add honeypot fields and minimum fill-out time for sign-up form (#15276)
* Add honeypot fields to limit non-specialized spam Add two honeypot fields: a fake website input and a fake password confirmation one. The label/placeholder/aria-label tells not to fill them, and they are hidden in CSS, so legitimate users should not fall into these. This should cut down on some non-Mastodon-specific spambots. * Require a 3 seconds delay before submitting the registration form * Fix tests * Move registration form time check to model validation * Give people a chance to clear the honeypot fields * Refactor honeypot translation strings Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
		
					parent
					
						
							
								9669167aae
							
						
					
				
			
			
				commit
				
					
						49eb4d4ddf
					
				
			
		
					 13 changed files with 70 additions and 5 deletions
				
			
		|  | @ -280,6 +280,17 @@ function main() { | |||
|       target.style.display = 'block'; | ||||
|     } | ||||
|   }); | ||||
| 
 | ||||
|   // Empty the honeypot fields in JS in case something like an extension
 | ||||
|   // automatically filled them.
 | ||||
|   delegate(document, '#registration_new_user,#new_user', 'submit', () => { | ||||
|     ['user_website', 'user_confirm_password', 'registration_user_website', 'registration_user_confirm_password'].forEach(id => { | ||||
|       const field = document.getElementById(id); | ||||
|       if (field) { | ||||
|         field.value = ''; | ||||
|       } | ||||
|     }); | ||||
|   }); | ||||
| } | ||||
| 
 | ||||
| loadPolyfills() | ||||
|  |  | |||
|  | @ -354,6 +354,7 @@ code { | |||
|   input[type=number], | ||||
|   input[type=email], | ||||
|   input[type=password], | ||||
|   input[type=url], | ||||
|   textarea { | ||||
|     box-sizing: border-box; | ||||
|     font-size: 16px; | ||||
|  | @ -994,3 +995,10 @@ code { | |||
|     flex-direction: row; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .input.user_confirm_password, | ||||
| .input.user_website { | ||||
|   &:not(.field_with_errors) { | ||||
|     display: none; | ||||
|   } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue