我正在构建一个与Web-Api通信的UWP应用程序。在某些点,我在URL中发送一个字符串到Web-Api,可以由用户操作。因此,字符串可以包含可以对Web-Api做恶事的字符
例如:
这是我的UserController
[Route("api/user/{uid}")]
public User GetUser(string uid)
{
return userRepository.GetByUid(uid);
}
为了这个例子,我们假设用户可以在文本框中手动输入uid
。现在,如果他投入
../vipuser
他可以访问VipUserController。因为../
是一个hirachy。
我搜索了一下,发现this SO article建议使用System.Web.UrlEncodeUnicode
和System.Web.UrlDecode
。
但是由于UWP Apps不包含System.Web
命名空间,我想知道是否有替代方法,我可以将其用于UWP-App吗?
答案 0 :(得分:17)
for (int i = 12; i > 0; i--)
{
list.RemoveAt((39999 * i) + 3);
list.RemoveAt((39999 * i) + 2);
list.RemoveAt((39999 * i) + 1);
list.RemoveAt(39999 * i);
}
和Uri.EscapeDataString()
可以解决问题。
答案 1 :(得分:0)
比System.Net.WebUtility.UrlDecode
上的方法更喜欢System.Net.WebUtility.UrlEncode
和Uri
。
这是因为WebUtility
在“ multipart / form-data”和“ application / x-www-form-urlencoded”编码中始终处理空格()和加号(+)。