Я могу поместить идентификатор сессии ASP.NET в скрытое поле формы?

На самом деле это очень просто. Для этого вы должны использовать NSMutableURLRequest, инициализировать его с помощью NSURL и установить любое значение пользовательского агента с помощью метода setValue:ForHTTPHeaderField:, где поле будет User-Agent, загрузите его на веб-просмотр. Это оно! Удачи!

9
задан Sam 18 August 2014 в 22:16
поделиться

3 ответа

Вот сообщение от специалиста по обслуживанию SWFUpload, который объясняет, как загрузить сессию из идентификатора, сохраненного в Запросе. Форма. Я предполагаю, что то же самое работало бы на компонент Yahoo.

Отметьте правовые оговорки безопасности в нижней части сообщения.


Включением файла Global.asax и следующего кода можно переопределить недостающий идентификационный cookie Сессии:

using System;
using System.Web;

public class Global_asax : System.Web.HttpApplication
{
    private void Application_BeginRequest(object sender, EventArgs e)
    {
        /* 
        Fix for the Flash Player Cookie bug in Non-IE browsers.
        Since Flash Player always sends the IE cookies even in FireFox
        we have to bypass the cookies by sending the values as part of the POST or GET
        and overwrite the cookies with the passed in values.

        The theory is that at this point (BeginRequest) the cookies have not been ready by
        the Session and Authentication logic and if we update the cookies here we'll get our
        Session and Authentication restored correctly
        */

        HttpRequest request = HttpContext.Current.Request;

        try
        {
            string sessionParamName = "ASPSESSID";
            string sessionCookieName = "ASP.NET_SESSIONID";

            string sessionValue = request.Form[sessionParamName] ?? request.QueryString[sessionParamName];
            if (sessionValue != null)
            {
                UpdateCookie(sessionCookieName, sessionValue);
            }
        }
        catch (Exception ex)
        {
            // TODO: Add logging here.
        }

        try
        {
            string authParamName = "AUTHID";
            string authCookieName = FormsAuthentication.FormsCookieName;

            string authValue = request.Form[authParamName] ?? request.QueryString[authParamName];
            if (authValue != null)
            {
                UpdateCookie(authCookieName, authValue);
            }
        }
        catch (Exception ex)
        {
            // TODO: Add logging here.
        }
    }

    private void UpdateCookie(string cookieName, string cookieValue)
    {
        HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookieName);
        if (cookie == null)
        {
            HttpCookie newCookie = new HttpCookie(cookieName, cookieValue);
            Response.Cookies.Add(newCookie);
        }
        else
        {
            cookie.Value = cookieValue;
            HttpContext.Current.Request.Cookies.Set(cookie);
        }
    }
}

Предупреждение системы безопасности: только скопируйте и вставьте этот код в к Вашему приложению ASP.NET, не зная то, что Вы делаете. Это представляет проблемы безопасности и возможности Сценариев перекрестного сайта.

4
ответ дан 3 November 2019 в 05:39
поделиться

Можно получить текущий SessionID из следующего кода:

string sessionId = HttpContext.Current.Session.SessionID;

Затем можно подать это в скрытое поле, возможно, и затем доступ то значение через YUI.

Это - просто получение, таким образом, у Вас, надо надеяться, не будет проблем масштабирования. Проблемы безопасности, хотя, который я не знаю.

1
ответ дан 3 November 2019 в 05:39
поделиться

Идентификатор Сессии ASP.NET хранится в Session.SessionID таким образом, Вы могли установить это в скрытом поле и затем отправить его на следующую страницу.

Я думаю, однако, что, если приложение перезапускает, sessionID истечет, если Вы не сохраните свои сессии в SQL-сервере.

0
ответ дан 3 November 2019 в 05:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: