【问题标题】:How to submit a form programmatically from code behind to an external site如何以编程方式将表单从后面的代码提交到外部站点
【发布时间】:2017-09-25 15:47:01
【问题描述】:

我尝试获取以编程方式创建的HtmlForm 的值到外部站点。本网站要求数据以POST 发送,因为它可能包含敏感信息。

我从这样的 JSon-Response 生成 HtmlForm

JObject jsonResponseActionData = (JObject)joResponse["action_data"];
var redirectURL = (JValue)jsonResponseActionData["url"];

HtmlForm form= new HtmlForm {
    Method = "post",
    Action = redirectURL.ToString()
};

var inputTypeString = "<input type=\"text\" name=\"inputName\" value=\"inputValue\">";
foreach (var obj in jsonResponseFields) {
    if (obj.Value.ToString() == "") {
        form.InnerHtml += inputTypeString.Replace("inputName", obj.Key).Replace("inputValue", "").Replace(">", " disabled >");
    } else {
        form.InnerHtml += inputTypeString.Replace("inputName", obj.Key).Replace("inputValue", obj.Value.ToString());
    }
}

如果我像这样将它写入 HTML 文件并添加一个提交按钮,我可以成功地将它提交到外部站点,因此我能够获取 JSon-Response 并从中正确提取所有信息.

我尝试过的:

如何将生成的表单提交到外部站点?请注意,该网站确实要求我提交表单,因此任何其他不涉及提交表单的解决方案都没有建设性。

【问题讨论】:

    标签: asp.net forms code-behind


    【解决方案1】:

    我现在实施了一个解决方法,也许这对其他人有帮助(但也许这个答案被低估了,因为它是如此可怕的黑客攻击?):

    我在子文件夹中创建了一个新的 HTML 页面。此子文件夹受Web.config.htaccess 保护(因为我没有找到禁止在Web.config 中调用*.html-files 的方法),这意味着这些文件不能从外部源列出,并且这些文件不能被即使您知道文件名,也可以查看。

    这个 HTML 页面只包含我要提交的表单和一些在页面加载时自动单击提交按钮的 JavaScript:

    <head>
        <script>
            function clickButton(){
                document.getElementById("submitForm").click();
        </script>
    </head>
    <body onload="clickButton()">
        <!--Actual content goes here-->
    </body>
    

    然后我将用户重定向到该页面:

    Response.Redirect(pageName);
    

    一旦处理完 JSON 数据。

    这在我的情况下会起作用,因为无论如何用户都会被重定向到外部站点,在最好的情况下,他/她甚至不会注意到重定向到这个中间站点,即使注意到了,页面也不会' t 包含用户不知道的任何内容,加上 HTML 文件中的数据不敏感,这些数据必须由用户在外部站点上输入,因此这里没有可能的安全漏洞。至少我现在想不到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 2020-10-03
      • 2010-11-22
      • 2023-03-18
      • 2017-08-03
      • 2018-06-13
      • 1970-01-01
      相关资源
      最近更新 更多