2017-09-25 4 views
0

J'essaie d'obtenir les valeurs d'un HtmlForm créé par programme à un site externe. Ce site nécessite que les données soient envoyées sous la forme POST, car elles peuvent contenir des informations sensibles.Comment soumettre un formulaire par programmation à partir du code derrière un site externe

je produis le HtmlForm d'un JSON-réponse comme ceci:

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()); 
    } 
} 

Si je l'écris comme celui-ci dans un fichier HTML et ajouter un bouton soumettre à lui, je peux le soumettre au site externe avec succès, donc je suis capable de prendre le JSon-Response et d'extraire toutes les informations à partir de là correctement.

Ce que j'ai essayé:

Comment puis-je soumettre mon formulaire généré au site externe? Notez que ce site exige en effet que je soumette un formulaire, donc toute autre solution n'impliquant pas la soumission d'un formulaire n'est pas constructive.

Répondre

0

I maintenant mis en œuvre une solution de contournement, peut-être cela est utile pour les autres (mais peut-être cette réponse est downvoted dans l'oubli, car il est un tel piratage terrible?):

Je crée une nouvelle page HTML dans un sous-dossier. Ce sous-dossier est protégé par Web.config et .htaccess (parce que je n'ai pas trouvé le moyen d'interdire l'appel de fichiers * .html dans Web.config), ce qui signifie que les fichiers ne peuvent pas être listés depuis une source externe et que les fichiers ne peuvent pas être visualisés. connaître le nom du fichier.

Cette page HTML ne contient que la forme que je veux présenter et un peu de JavaScript qui clique automatiquement sur le bouton d'envoi à la page charge:

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

Je redirigent ensuite l'utilisateur à cette page avec:

Response.Redirect(pageName); 

une fois la gestion des données JSON terminée.

Cela fonctionnera dans mon cas car l'utilisateur est redirigé vers le site externe de toute façon, dans le meilleur des cas il/elle ne remarquera même pas la redirection vers ce site intermédiaire, et même s'il est remarqué, la page ne Ne pas contenir tout ce que l'utilisateur ne sait pas déjà, plus les données dans le fichier HTML n'est pas sensible, ces données doivent être saisies par l'utilisateur sur le site externe, il n'y a donc pas de violation de sécurité possible ici. Au moins, je peux penser à tout de suite.