0

我正在尝试解决大约 6 年前编写的遗留 asp.net WebForms 应用程序的问题。我会尽力解释并希望有人能看到修复。

我们的应用程序支持我们所说的“API”。实际上,它只是打算在我们客户网站的页面中显示的几个页面。我们还提供了一个示例应用程序来展示如何使用它。

示例应用程序有一些表单字段供调用者提供值。提交后,我们创建一个 HTML 字符串,其中包含一个带有标签的 elelement

submit() 是 postgback 上的表单。

例子:

... form1.submit();

只要最终用户将我们的域放在他们受信任的站点中,此方法就会成功。否则,用户会收到权限被拒绝错误。但是,最近,我们有几个客户拒绝将我们添加到受信任的站点,并且

希望以另一种方式解决问题。

我尝试过的一种方法是使用 HttpClient.PostAsync() 来执行上面的表单/脚本所做的事情,但来自服务器端。

public HttpResponseMessage Post(string address, MediaTypeWithQualityHeaderValue acceptType, List<KeyValuePair<string, string>> data)
{
    using (HttpClient client = new HttpClient())
    {
        //client.BaseAddress = new Uri(address);

        client.DefaultRequestHeaders.Accept.Add(acceptType);

        HttpContent content = new FormUrlEncodedContent(data);
        HttpResponseMessage response = client.PostAsync(address, content).Result;

        return response.EnsureSuccessStatusCode();
    }

}

它是这样称呼的:

    string hash = GenerateHashValue();
    List<KeyValuePair<string, string>> data = this.BuildPostData(hash);
    MediaTypeWithQualityHeaderValue acceptType = new MediaTypeWithQualityHeaderValue("text/html");
    HttpResponseMessage msg = Post(this.GetPostTargetUrl(), acceptType, data);
    var task = msg.Content.ReadAsStringAsync();
    task.Wait();
    string result = task.Result;
    Response.Write(result);
    Response.End();

响应 HTML 已成功写入,但它本质上是“断开的” - 之后没有任何效果。正常情况下,使用 / 方法 about uses 可以在 iframe 中导航到我们的其他页面

site.Looking 在提琴手中,我看到使用当前 / 方法时看到的一些帖子和重定向正在发生,并且对于来自我们网站的许多 javascript 文件,我得到了 404。

任何人都可以提出另一种方法,在这种方法中我不会出现 XSS 错误而是“连接的”iframe?

谢谢,丹

4

0 回答 0