-
Notifications
You must be signed in to change notification settings - Fork 97
Open
Description
As pointed out by /u/LucasMathWalker on Reddit: https://www.reddit.com/r/rust/comments/shetb1/show_rrust_a_rust_implementation_of_the_realworld/hv42wuo/
Text inputs in various routes are not properly validated. That's an oversight on my part. Were I designing these routes from scratch I would have considered it, but the Realworld spec is silent on input validation so I wasn't thinking about it.
Where variables are given, pick reasonable values for the context but don't assume they are the same values between routes:
- In
users::create_user(): https://github.com/launchbadge/realworld-axum-sqlx/blob/main/src/http/users.rs#L60usernameshould be between X and Y characters longpasswordshould be between X and Y characters long (allow long passwords but not super long)emailshould be non-empty and "look like an email" and at most X characters long- I'm not thinking a validation with regex is necessary here but it should at least contain
@ - Email validation is hard to get right, and usually not worth the effort: https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-address-using-a-regular-expression
- Note that normally the application would submit a confirmation email instead; find a recent article advising on how to confirm emails.
- I'm not thinking a validation with regex is necessary here but it should at least contain
- In
users::update_user():- Apply the same validations as above.
- Limit
bioto X characters in length.
- In
articles::create_article(): https://github.com/launchbadge/realworld-axum-sqlx/blob/main/src/http/articles/mod.rs#L137titleshould be between X and Y characters longdescriptionshould be between X and Y characters long- Require that
bodyis not empty and at most X characters in length (Reddit uses 5000 for a comment, seems reasonable.) - Limit
tag_listto N elements; limit each tag to X characters in length
- In
articles::update_article(): https://github.com/launchbadge/realworld-axum-sqlx/blob/main/src/http/articles/mod.rs#L204- Apply the same validations as above.
- In
articles::comments::add_comment(): https://github.com/launchbadge/realworld-axum-sqlx/blob/main/src/http/articles/comments.rs#L121- Require that
bodyis not empty and limit it to X characters in length.
- Require that
Metadata
Metadata
Assignees
Labels
No labels