我有一个服务堆栈应用程序,一个测试服务收到一个简单的请求,但是我发现收到的请求的值与原始请求不匹配。
我发:http://localhost/testapp/test?value=%22test%20data%22%20%3C12345%3E
但代码输出:测试数据“12345>
注意缺少的第一个双引号和缺少的左尖括号。
有什么想法为什么应用程序会删除第一个 "和 "<"?它是某种 XSS 保护的一部分吗?
我的代码:
public class TestService : RestServiceBase<RequestDto>, IRestService<RequestDto>
{
public override object OnGet(RequestDto request)
{
return request.Value;
}
}
public class RequestDto
{
public string Value { get; set; }
}
首先允许服务堆栈接收带有“<”的请求。我不得不切换应用程序 web.config 使用:requestValidationMode="2.0"
最佳答案
这也已在即将发布的 servicestack 版本中修复。
看到这个 github issue了解更多信息。
关于urlencode - 编码问题服务堆栈、引号和尖括号被剥离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13602472/