【问题标题】:How to concatenate safely uri path segments?如何安全地连接uri路径段?
【发布时间】:2021-05-21 09:19:00
【问题描述】:

我有一个看起来像这样的代码

public async Task DeleteUser(string userId)
{
   await httpClient.DeleteAsync($"/v1/api/users/{userId}");
}

问题是恶意条目可能会删除预期用户之外的其他内容。 例如,如果一个用户有很多博客帖子,则恶意条目可能是userId="/v1/api/users/12394/posts/4",这将删除博客帖子而不是删除该用户。

现在,Uri 类似乎有 3 种不同的转义方法。 Uri.EscapeUriStringUri.EscapeStringUri.EscapeDataString。 但是,围绕这些及其差异的文档要么不存在,要么真的无法理解,需要阅读 3 RFCs 才能理解其目的。

我记得我什至在某个地方看到了其他方法(我认为是在一个名为 WebUtility 的类中),它们也在 URL 中转义了东西。

那么转义路径段的正确方法是什么?

编辑:

我忘了HttpUtility.UrlEncode

【问题讨论】:

标签: c# .net .net-core dotnet-httpclient


【解决方案1】:

在 cmets 中进行一些搜索和回答后,我发现这些链接解释了一些事情:

https://stackoverflow.com/a/47877559/19803

What's the difference between EscapeUriString and EscapeDataString?

简短的回答是EscapeDataString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多