Exemple #1
0
        /// <summary>
        /// Encodes input strings for use in application/x-www-form-urlencoded form submissions.
        /// </summary>
        /// <param name="input">String to be encoded.</param>
        /// <param name="inputEncoding">Input encoding type.</param>
        /// <returns>
        /// Encoded string for use in URLs.
        /// </returns>
        /// <remarks>
        /// This function encodes the output as per the encoding parameter (codepage) passed to it. It encodes
        /// all but known safe characters.  Characters are encoded using %SINGLE_BYTE_HEX and %DOUBLE_BYTE_HEX notation.
        /// If the inputEncoding is null then UTF-8 is assumed by default.
        /// <newpara/>
        /// Safe characters include:
        /// <list type="table">
        /// <item><term>a-z</term><description>Lower case alphabet</description></item>
        /// <item><term>A-Z</term><description>Upper case alphabet</description></item>
        /// <item><term>0-9</term><description>Numbers</description></item>
        /// <item><term>.</term><description>Period</description></item>
        /// <item><term>-</term><description>Dash</description></item>
        /// <item><term>_</term><description>Underscore</description></item>
        /// <item><term>~</term><description>Tilde</description></item>
        /// </list>
        /// <newpara/>
        /// Example inputs and encoded outputs:
        /// <list type="table">
        /// <item><term>alert('XSSあAttack!');</term><description>alert%28%27XSS%82%a0Attack%21%27%29%3b</description></item>
        /// <item><term>[email protected]</term><description>user%40contoso.com</description></item>
        /// <item><term>Anti-Cross Site Scripting Library</term><description>Anti-Cross+Site+Scripting+Library</description></item>
        /// </list>
        /// </remarks>
        public static string HtmlFormUrlEncode(string input, Encoding inputEncoding)
        {
            // Assuming the default to be UTF-8
            if (inputEncoding == null)
            {
                inputEncoding = Encoding.UTF8;
            }

            return(HtmlParameterEncoder.FormStringParameterEncode(input, inputEncoding));
        }
Exemple #2
0
        public static string UrlPathEncode(string input)
        {
            if (string.IsNullOrEmpty(input))
            {
                return(input);
            }

            // DevDiv #211105: We should make the UrlPathEncode method encode only the path portion of URLs.
            bool validUrl = UriUtil.TrySplitUriForPathEncode(input, out string schemeAndAuthority, out string path, out string queryAndFragment);

            if (!validUrl)
            {
                // treat as a relative URL, so we might still need to chop off the query / fragment components
                schemeAndAuthority = null;
#pragma warning disable CA1062 // Validate arguments of public methods - Is validated above
                UriUtil.ExtractQueryAndFragment(input, out path, out queryAndFragment);
#pragma warning restore CA1062 // Validate arguments of public methods - Is validated above
            }

            return(schemeAndAuthority + HtmlParameterEncoder.UrlPathEncode(path, Encoding.UTF8) + queryAndFragment);
        }