2018-06-29 19:52:40 +02:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Web;
|
|
|
|
|
|
using Umbraco.Core;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Web
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Extension methods for the HttpRequest and HttpRequestBase objects
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public static class HttpRequestExtensions
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Extracts the value from the query string and cleans it to prevent xss attacks.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
|
/// <param name="key"></param>
|
2018-11-19 15:32:26 +11:00
|
|
|
|
/// <param name="valueIfNotFound"></param>
|
2018-06-29 19:52:40 +02:00
|
|
|
|
/// <returns></returns>
|
2018-11-19 15:32:26 +11:00
|
|
|
|
public static string CleanForXss(this HttpRequest request, string key, string valueIfNotFound = "")
|
2018-06-29 19:52:40 +02:00
|
|
|
|
{
|
2018-11-19 15:32:26 +11:00
|
|
|
|
var item = request.GetItemAsString(key, valueIfNotFound);
|
2018-06-29 19:52:40 +02:00
|
|
|
|
return item.CleanForXss();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Safely get a request item as string, if the item does not exist, an empty string is returned.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
|
/// <param name="valueIfNotFound">The value to return if the key is not found in the collection</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public static string GetItemAsString(this HttpRequest request, string key, string valueIfNotFound = "")
|
|
|
|
|
|
{
|
|
|
|
|
|
return new HttpRequestWrapper(request).GetItemAsString(key, valueIfNotFound);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Safely get a request item as string, if the item does not exist, an empty string is returned.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
|
/// <param name="valueIfNotFound">The value to return if the key is not found in the collection</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public static string GetItemAsString(this HttpRequestBase request, string key, string valueIfNotFound = "")
|
|
|
|
|
|
{
|
|
|
|
|
|
var val = request[key];
|
|
|
|
|
|
return !val.IsNullOrWhiteSpace() ? val : valueIfNotFound;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Safely get the item from the query string and convert it to type 'T', otherwise will return default(T).
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public static T GetItemAs<T>(this HttpRequestBase request, string key)
|
|
|
|
|
|
{
|
|
|
|
|
|
var val = request[key];
|
|
|
|
|
|
var whitespaceCheck = !val.IsNullOrWhiteSpace() ? val : string.Empty;
|
|
|
|
|
|
if (whitespaceCheck.IsNullOrWhiteSpace())
|
|
|
|
|
|
return (T) typeof (T).GetDefaultValue();
|
|
|
|
|
|
var attempt = val.TryConvertTo<T>();
|
|
|
|
|
|
if (attempt.Success)
|
|
|
|
|
|
return attempt.Result;
|
|
|
|
|
|
return (T)typeof(T).GetDefaultValue();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Safely get the item from the query string and convert it to type 'T', otherwise will return default(T).
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
|
|
|
/// <param name="request"></param>
|
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public static T GetItemAs<T>(this HttpRequest request, string key)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new HttpRequestWrapper(request).GetItemAs<T>(key);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|