» schneegans.de » ASP.NET » URL-Maskierung
Im .NET-Framework gibt es gleich mehrere Methoden, die Strings so maskieren, daß sie sicher in URLs verwendet werden können:
Worin unterscheiden sich diese Methoden?
HttpServerUtility.UrlEncode und HttpServerUtility.UrlPathEncode verwenden die gleichnamigen Methoden der HttpUtility-Klasse und benutzen Response.ContentEncoding als Codierung.
Nicht-ASCII-Zeichen werden von allen hier erwähnten Methoden %HH-maskiert, standardmäßig mit UTF-8. Unterschiede ergeben sich also ausschließlich bei ASCII-Zeichen (U+0000 bis U+007F); diese Unterschiede sind in der Tabelle hervorgehoben.
Die nicht druckbaren Zeichen U+0000 bis U+001F werden von HttpUtility.UrlPathEncode nicht angefaßt, von den anderen %HH-maskiert.
HttpUtility.UrlEncode entspricht ungefähr dem application/x-www-form-urlencoded-Inhaltstyp.
| Zeichen | Uri.EscapeUriString | Uri.EscapeDataString | HttpUtility.UrlEncode | HttpUtility.UrlPathEncode | |
|---|---|---|---|---|---|
| U+0020 | %20 | %20 | + | %20 | |
| ! | U+0021 | ! | ! | ! | ! |
| " | U+0022 | %22 | %22 | %22 | " |
| # | U+0023 | # | %23 | %23 | # |
| $ | U+0024 | $ | %24 | %24 | $ |
| % | U+0025 | %25 | %25 | %25 | % |
| & | U+0026 | & | %26 | %26 | & |
| ' | U+0027 | ' | ' | ' | ' |
| ( | U+0028 | ( | ( | ( | ( |
| ) | U+0029 | ) | ) | ) | ) |
| * | U+002A | * | * | * | * |
| + | U+002B | + | %2B | %2B | + |
| , | U+002C | , | %2C | %2C | , |
| - | U+002D | - | - | - | - |
| . | U+002E | . | . | . | . |
| / | U+002F | / | %2F | %2F | / |
| 0 | U+0030 | 0 | 0 | 0 | 0 |
| 1 | U+0031 | 1 | 1 | 1 | 1 |
| 2 | U+0032 | 2 | 2 | 2 | 2 |
| 3 | U+0033 | 3 | 3 | 3 | 3 |
| 4 | U+0034 | 4 | 4 | 4 | 4 |
| 5 | U+0035 | 5 | 5 | 5 | 5 |
| 6 | U+0036 | 6 | 6 | 6 | 6 |
| 7 | U+0037 | 7 | 7 | 7 | 7 |
| 8 | U+0038 | 8 | 8 | 8 | 8 |
| 9 | U+0039 | 9 | 9 | 9 | 9 |
| : | U+003A | : | %3A | %3A | : |
| ; | U+003B | ; | %3B | %3B | ; |
| < | U+003C | %3C | %3C | %3C | < |
| = | U+003D | = | %3D | %3D | = |
| > | U+003E | %3E | %3E | %3E | > |
| ? | U+003F | ? | %3F | %3F | ? |
| @ | U+0040 | @ | %40 | %40 | @ |
| A | U+0041 | A | A | A | A |
| B | U+0042 | B | B | B | B |
| C | U+0043 | C | C | C | C |
| D | U+0044 | D | D | D | D |
| E | U+0045 | E | E | E | E |
| F | U+0046 | F | F | F | F |
| G | U+0047 | G | G | G | G |
| H | U+0048 | H | H | H | H |
| I | U+0049 | I | I | I | I |
| J | U+004A | J | J | J | J |
| K | U+004B | K | K | K | K |
| L | U+004C | L | L | L | L |
| M | U+004D | M | M | M | M |
| N | U+004E | N | N | N | N |
| O | U+004F | O | O | O | O |
| P | U+0050 | P | P | P | P |
| Q | U+0051 | Q | Q | Q | Q |
| R | U+0052 | R | R | R | R |
| S | U+0053 | S | S | S | S |
| T | U+0054 | T | T | T | T |
| U | U+0055 | U | U | U | U |
| V | U+0056 | V | V | V | V |
| W | U+0057 | W | W | W | W |
| X | U+0058 | X | X | X | X |
| Y | U+0059 | Y | Y | Y | Y |
| Z | U+005A | Z | Z | Z | Z |
| [ | U+005B | %5B | %5B | %5B | [ |
| \ | U+005C | %5C | %5C | %5C | \ |
| ] | U+005D | %5D | %5D | %5D | ] |
| ^ | U+005E | %5E | %5E | %5E | ^ |
| _ | U+005F | _ | _ | _ | _ |
| ` | U+0060 | %60 | %60 | %60 | ` |
| a | U+0061 | A | A | A | A |
| b | U+0062 | B | B | B | B |
| c | U+0063 | C | C | C | C |
| d | U+0064 | D | D | D | D |
| e | U+0065 | E | E | E | E |
| f | U+0066 | F | F | F | F |
| g | U+0067 | G | G | G | G |
| h | U+0068 | H | H | H | H |
| i | U+0069 | I | I | I | I |
| j | U+006A | J | J | J | J |
| k | U+006B | K | K | K | K |
| l | U+006C | L | L | L | L |
| m | U+006D | M | M | M | M |
| n | U+006E | N | N | N | N |
| o | U+006F | O | O | O | O |
| p | U+0070 | P | P | P | P |
| q | U+0071 | Q | Q | Q | Q |
| r | U+0072 | R | R | R | R |
| s | U+0073 | S | S | S | S |
| t | U+0074 | T | T | T | T |
| u | U+0075 | U | U | U | U |
| v | U+0076 | V | V | V | V |
| w | U+0077 | W | W | W | W |
| x | U+0078 | X | X | X | X |
| y | U+0079 | Y | Y | Y | Y |
| z | U+007A | Z | Z | Z | Z |
| { | U+007B | %7B | %7B | %7B | { |
| | | U+007C | %7C | %7C | %7C | | |
| } | U+007D | %7D | %7D | %7D | } |
| ~ | U+007E | ~ | ~ | %7E | ~ |
| | U+007F | %7F | %7F | %7F | |