Отправка учетных данных в тело cfhttp с помощью ColdFusion - PullRequest
0 голосов
/ 14 марта 2019

Я передаю несколько учетных данных вместе с __EVENTARGUMENT, __VIEWSTATE. Но я не смог увидеть переменные и данные в консоли или в скрипте. Я что-то упустил. Я попытался с URL, Formfield и тела без успеха. Кстати, я использую ColdFusion 9.

<cfset authenticationRequestBody = "__LASTFOCUS=#LASTFOCUS#&__EVENTTARGET=#EVENTTARGET#&__EVENTARGUMENT=#EVENTARGUMENT#&__VIEWSTATE=#EncodeViewState#&__VIEWSTATEGENERATOR=#EncodeViewGenerator#&__EVENTVALIDATION=#EncodeEventValidation#&#encodeForURL(UNameString)#=#UserName#&#encodeForURL(PwdString)#=#encodeForURL(Password)#&#encodeForURL(ButtonString)#=Submit">


<cfset stsUrl = "https://somesite.com/yyy/login.aspx" >
<cfhttp url="#stsUrl#" method="post"  resolveurl="no"  >
    <cfhttpparam type="header" name="Accept" value="application/xhtml+xml,text/html">
    <cfhttpparam type="header" name="REFERER" value="#BaseUrl#" >
    <cfhttpparam type="header" name="Accept-Language" value="en-US">
    <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
    <cfhttpparam type="header" name="Connection" value="keep-alive" >
    <cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" >
    <cfloop collection="#cookies#" item="i">
        <cfhttpparam type = "cookie" name="#i#" value="#cookies[i]#">
    </cfloop>
    <cfhttpparam type="body" name="PostData" value="#authenticationRequestBody#">


<cfoutput>
    <cfdump var="#GetHTTPRequestData()#">
</cfoutput>

Это не проблема, связанная с конфигурацией, поскольку я проверил версию JVM и версию TLS на Сайте, используя тестовый сервер SSL. Здесь есть кое-что, чего мне не хватает в коде ..

Coldfusion 11 (обновление 12) JVM: 1,8 TLS: 1,2

Я смог добраться до экрана входа в систему. Даже после ввода имени пользователя и пароля в теле он не проверяется. Когда я получаю доступ к URL-адресу напрямую с теми же учетными данными, он успешно входит в систему.

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

Проблема не в конфигурации или в версии совместимости. Проблема в файлах cookie, которые мы передаем с самого начала. Когда мы перемещаемся по другой странице с помощью cfhttp, нам нужно сохранить старые файлы cookie, полученные из прошлого. вызовы cfhttp. Также в моем случае мне нужно инициализировать cookie при первом вызове. Ниже приведен пример для двух вызовов.

<cfhttp url='#BaseUrl#' method="get" redirect="no">
        <cfhttpparam type="header" name="Connection" value="keep-alive" >
        <cfhttpparam type="header" name="Cache-Control" value="no-cache">
        <cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko">
        <cfhttpparam type="header" name="cookie" value="TestCookie=;" >
</cfhttp>

<cfhttp url="#stsUrl#" method="post"  redirect="no" resolveurl="yes" result="postResult" >
    <cfhttpparam type="header" name="REFERER" value="#BaseUrl#" >
    <cfhttpparam type="header" name="Cache-Control" value="no-cache">
    <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
    <cfhttpparam type="header" name="Connection" value="keep-alive" >
    <cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36" >

    <cfhttpparam type="header" name="cookie" value="TestCookie=;" encoded="yes">

    <cfloop collection="#CookieList#" item="i">
        <cfhttpparam type="header" name="cookie" value="#CookieList[i]#" encoded="yes">
    </cfloop>

    <cfhttpparam name="__LASTFOCUS"  value="" type="formfield">
    <cfhttpparam name="__EVENTTARGET"  value="" type="formfield">
    <cfhttpparam name="__EVENTARGUMENT"  value="" type="formfield">
    <cfhttpparam name="__VIEWSTATE"  value="#VIEWSTATE#" type="formfield">
    <cfhttpparam name="__VIEWSTATEGENERATOR"  value="#VIEWSTATEGENERATOR#" type="formfield">
    <cfhttpparam name="__EVENTVALIDATION"  value="#EVENTVALIDATION#" type="formfield">
    <cfhttpparam name="ctl00$MainContent$LoginCtrl$UserName"  value="#UserName#" type="formfield">
    <cfhttpparam name="ctl00$MainContent$LoginCtrl$Password"  value="#Password#" type="formfield">
    <cfhttpparam name="ctl00$MainContent$LoginCtrl$LoginButton"  value="Submit" type="formfield">
</cfhttp>
0 голосов
/ 14 марта 2019

Попробуйте сделать

<cfdump var="#cfhttp#">

OR

<cfhttp url="#stsUrl#" method="post"  resolveurl="no" result="result" >  
   ...
</cfhttp>

<cfdump var="#result#">
...