mirror of https://github.com/rails/rails
Merge pull request #40441 from olivierlacan/doc/update-has-secure-password
Update outdated has_secure_password documentation [ci skip]
This commit is contained in:
commit
d9b286bf8a
|
@ -445,28 +445,7 @@ User Management
|
|||
|
||||
NOTE: _Almost every web application has to deal with authorization and authentication. Instead of rolling your own, it is advisable to use common plug-ins. But keep them up-to-date, too. A few additional precautions can make your application even more secure._
|
||||
|
||||
There are a number of authentication plug-ins for Rails available. Good ones, such as the popular [devise](https://github.com/plataformatec/devise) and [authlogic](https://github.com/binarylogic/authlogic), store only encrypted passwords, not plain-text passwords. In Rails 3.1 you can use the built-in `has_secure_password` method which has similar features.
|
||||
|
||||
Every new user gets an activation code to activate their account when they get an e-mail with a link in it. After activating the account, the activation_code columns will be set to NULL in the database. If someone requested a URL like these, they would be logged in as the first activated user found in the database (and chances are that this is the administrator):
|
||||
|
||||
```
|
||||
http://localhost:3006/user/activate
|
||||
http://localhost:3006/user/activate?id=
|
||||
```
|
||||
|
||||
This is possible because on some servers, this way the parameter id, as in params[:id], would be nil. However, here is the finder from the activation action:
|
||||
|
||||
```ruby
|
||||
User.find_by_activation_code(params[:id])
|
||||
```
|
||||
|
||||
If the parameter was nil, the resulting SQL query will be
|
||||
|
||||
```sql
|
||||
SELECT * FROM users WHERE (users.activation_code IS NULL) LIMIT 1
|
||||
```
|
||||
|
||||
And thus it found the first user in the database, returned it, and logged them in. You can find out more about it in [this blog post](http://www.rorsecurity.info/2007/10/28/restful_authentication-login-security/). _It is advisable to update your plug-ins from time to time_. Moreover, you can review your application to find more flaws like this.
|
||||
There are a number of authentication plug-ins for Rails available. Good ones, such as the popular [devise](https://github.com/heartcombo/devise) and [authlogic](https://github.com/binarylogic/authlogic), store only encrypted passwords, not plain-text passwords. Since Rails 3.1 you can also use the built-in [`has_secure_password`](https://api.rubyonrails.org/classes/ActiveModel/SecurePassword/ClassMethods.html#method-i-has_secure_password) method which supports password encryption, confirmation, and recovery mechanisms.
|
||||
|
||||
### Brute-Forcing Accounts
|
||||
|
||||
|
|
Loading…
Reference in New Issue