forked from siteserver/cms
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPageLoading.cs
More file actions
50 lines (42 loc) · 2.06 KB
/
PageLoading.cs
File metadata and controls
50 lines (42 loc) · 2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System.Collections.Specialized;
using BaiRong.Core;
namespace SiteServer.BackgroundPages
{
public class PageLoading : BasePage
{
protected override bool IsAccessable => true;
protected override bool IsSinglePage => true;
public string GetRedirectUrl()
{
var redirectUrl = PageUtils.FilterXss(StringUtils.ValueToUrl(Body.GetQueryString("RedirectUrl"), true));
if (!string.IsNullOrEmpty(redirectUrl))
{
var queryStringOriginal = new NameValueCollection(Request.QueryString);
queryStringOriginal.Remove("RedirectType");
queryStringOriginal.Remove("RedirectUrl");
queryStringOriginal.Add(PageUtils.GetQueryString(redirectUrl));
var queryString = new NameValueCollection();
foreach (string name in queryStringOriginal.Keys)
{
//filter xss for load page, update by sessionliang 20160112
queryString[name] = PageUtils.FilterXss(queryStringOriginal[name]);
}
redirectUrl = PageUtils.GetUrlWithoutQueryString(redirectUrl);
if (!PageUtils.IsProtocolUrl(redirectUrl) && !redirectUrl.StartsWith("/"))
{
redirectUrl = PageUtils.GetAdminDirectoryUrl(redirectUrl);
}
redirectUrl = StringUtils.ValueFromUrl(redirectUrl, true);
//filter xss for preload page, update by sessionliang 20160112
//1. get query string with filter xss
var fxQueryString = PageUtils.GetQueryStringFilterXss(redirectUrl);
//2. get url without query string
redirectUrl = PageUtils.GetUrlWithoutQueryString(redirectUrl);
//3. combin
redirectUrl = PageUtils.AddQueryString(redirectUrl, fxQueryString);
return PageUtils.AddQueryString(redirectUrl, queryString).Replace('"', ' ').Replace('\n', ' ');
}
return string.Empty;
}
}
}