mirror of
https://github.com/actix/actix-website
synced 2025-02-24 21:13:20 +01:00
Remove invalid docs regarding parsing PathBuf
(#230)
This paragraph is no longer valid since v1.0! Also, the example code still compiles fine and this may easily introduce a security vulnerability for the user.
This commit is contained in:
parent
63d70701e0
commit
09ad5775ac
@ -259,24 +259,6 @@ Specific values can be retrieved with [`Path::get()`][pathget].
|
|||||||
|
|
||||||
For this example for path '/a/1/2/', values v1 and v2 will resolve to "1" and "2".
|
For this example for path '/a/1/2/', values v1 and v2 will resolve to "1" and "2".
|
||||||
|
|
||||||
It is possible to create a `PathBuf` from a tail path parameter. The returned `PathBuf` is
|
|
||||||
percent-decoded. If a segment is equal to "..", the previous segment (if
|
|
||||||
any) is skipped.
|
|
||||||
|
|
||||||
For security purposes, if a segment meets any of the following conditions,
|
|
||||||
an `Err` is returned indicating the condition met:
|
|
||||||
|
|
||||||
* Decoded segment starts with any of: `.` (except `..`), `*`
|
|
||||||
* Decoded segment ends with any of: `:`, `>`, `<`
|
|
||||||
* Decoded segment contains any of: `/`
|
|
||||||
* On Windows, decoded segment contains any of: '\'
|
|
||||||
* Percent-encoding results in invalid UTF8.
|
|
||||||
|
|
||||||
As a result of these conditions, a `PathBuf` parsed from request path parameter is
|
|
||||||
safe to interpolate within, or use as a suffix of, a path without additional checks.
|
|
||||||
|
|
||||||
{{< include-example example="url-dispatch" file="pbuf.rs" section="pbuf" >}}
|
|
||||||
|
|
||||||
## Path information extractor
|
## Path information extractor
|
||||||
|
|
||||||
Actix provides functionality for type safe path information extraction. [*Path*][pathstruct]
|
Actix provides functionality for type safe path information extraction. [*Path*][pathstruct]
|
||||||
|
@ -7,7 +7,6 @@ pub mod norm;
|
|||||||
pub mod norm2;
|
pub mod norm2;
|
||||||
pub mod path;
|
pub mod path;
|
||||||
pub mod path2;
|
pub mod path2;
|
||||||
pub mod pbuf;
|
|
||||||
pub mod resource;
|
pub mod resource;
|
||||||
pub mod scope;
|
pub mod scope;
|
||||||
pub mod url_ext;
|
pub mod url_ext;
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
// <pbuf>
|
|
||||||
use actix_web::{get, App, HttpRequest, HttpServer, Result};
|
|
||||||
use std::path::PathBuf;
|
|
||||||
|
|
||||||
#[get("/a/{tail:.*}")]
|
|
||||||
async fn index(req: HttpRequest) -> Result<String> {
|
|
||||||
let path: PathBuf = req.match_info().query("tail").parse().unwrap();
|
|
||||||
Ok(format!("Path {:?}", path))
|
|
||||||
}
|
|
||||||
|
|
||||||
#[actix_web::main]
|
|
||||||
async fn main() -> std::io::Result<()> {
|
|
||||||
HttpServer::new(|| App::new().service(index))
|
|
||||||
.bind("127.0.0.1:8080")?
|
|
||||||
.run()
|
|
||||||
.await
|
|
||||||
}
|
|
||||||
// </pbuf>
|
|
Loading…
x
Reference in New Issue
Block a user