如何使用Web API保护JSONP请求?

时间:2013-08-06 23:04:19

标签: c# security asp.net-web-api jsonp

我从这里使用自定义JSONP格式化程序: http://www.west-wind.com/weblog/posts/2012/Apr/02/Creating-a-JSONP-Formatter-for-ASPNET-Web-API

它适用于最新的Web API。但是,我如何限制所以它不适用于我的所有Web API服务,而只适用于我放置JSONP属性的服务。关于如何确保我选择的某些行为的任何想法?

1 个答案:

答案 0 :(得分:1)

如果你可以按照想要作为JSONP返回的对象类型来思考,而不是动作,你可以像这样更改格式化程序,只允许将某些类型序列化为JSONP。

public override bool CanWriteType(Type type)
{
    // Check type here and return true only for the types you want to allow JSONP
    return true;
}

如果无法进行基于类型的过滤,则另一个选项是不将格式化程序添加到formatters集合中,并且仅在要返回JSONP的操作方法中显式指定JsonpFormatter

return new HttpResponseMessage()
{
    Content = new ObjectContent<MyType>(anInstanceOfMyType, new JsonpFormatter())
};

然而,一个缺点是,无论conneg出现什么,这都只会返回JSONP。