で入力できる文字はパラメータの取得
-
12-09-2019 - |
質問
文字認められたパラメータを取得しますずにエンコーディングまたは逃げているのか。なんて思ったこと。
http://www.example.org/page.php?name=XYZ
何ができるのですがなXYZ?と思うだけ以下の文字:
- a-z(A-Z)
- 0-9
- -
- _
この完全なリストはありま追加の文字です。
かんでいただけたでしょうか助けてくれます。感謝。
解決
があり 予約文字, では、予約の意味で、区切り文字— :/?#[]@
とsubdelimiters— !$&'()*+,;=
また文字のセットと呼ばれ 自由文字 —好きな文字や -._~
—するしないエンコードされています。
ということは、その ものとして捉えられるべきだと思い自由の文字セットされ%が符号化された時にはない特別の意味など渡した場合の一環として GET
パラメータ).
他のヒント
質問を求める文字 許可を得なパラメータエンコーディングまたはエスケープす.
による RFC3986 (一般書式]URL) RFC7230部2.7.1 (HTTP/S"URLの構文の文字だけです%エンコード以外の クエリ セットを定義します。
しかし、追加的な仕様など、HTML5、 Webフォームを旧物価連動検索, W3C勧め。その資料を追加特別の意味を有する一部の文字には、記号のような = & + ;.
その他の回答をこちらの予約文字の符号化を含む"/""?".ことを確認してください。実際、 RFC3986部3.4 の助言対%エンコード"/""?"文字です。
ることもあり、よく使う% エンコードします。
RFC3986を定義すクエリーコンポーネントとして:
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
パーセント-エンコーディングメカニズムはを表すのに使用されるデータをオクテット、 たときにコンポーネンとオクテットの対応する文字以外の 可設定として利用されている区切り文字以内、 ます。
こXYZの部分はエンコード:
special: # % = & ;
Space
out of query set: [ ]
non ASCII encodable characters
な半角カタカナや特殊記号 =&;は キー名=値 セパレータ.
エンコードその他の文字は許可が必要ありません。
の文字はURLで許可されている RFC 1738 のから:
のみ英数字、特殊文字 "$ -_。+!* '()、"、および その予約の目的のために使用される予約文字を使用することができます URLの中にエンコードされていない。
予約文字である「;」、「/」、「:」、「@」、「=」と「&」、あなたがそれらを使用したい場合は、それらをコードするURLに必要となることを意味します「?」ます。
英数字とのすべての
~
-
_
.
!
*
'
(
)
,
URLの中に有効です。
他のすべての文字をエンコードする必要があります。
私はクロームのアドレスバーやbashで$QUERY_STRING
を使用してテストを行なったし、次のように観察します:
~!@$%^&*()-_=+[{]}\|;:',./?
とgrave (backtick)
は平文として渡されます。
、
"
、<
と>
それぞれ%20
、%22
、%3C
と%3E
に変換されます。
#
は無視され、古風アンカーを。
個人的に、私は弾丸をかむと言うと、BASE64でエンコードしたい:)
RFC1738及びRFC3986で規定されている(のURNとURLを含む)URIの符号化に関する規則の全ては、ここでTLだ;これら長く退屈なドキュメントのDR
また、URLエンコードとして知らパーセントエンコーディングは、特定の状況下URI内の情報を符号化するための機構です。 URIに使用できる文字は、予約や予約されていないのどちらかです。予約文字は時々特別な意味を持っているそれらの文字ですが、彼らは、エンコーディングが必要な文字だけではありません。
任意のエンコーディングを必要としない66の予約されていない文字があります。
abcdefghiklmopqrstuvwABCDEFGHIKLMOPQRSTUVWXYZ0123456789-_.~
があり、符号化する必要があります18予約文字です:!*'();:@&=+$,/?#[]
は、他のすべての文字をエンコードする必要があります。
は、パーセントエンコード文字に、単に「%」とそのASCII値を連結します 進。 PHP関数「でurlencode」と「rawurlencode」あなたのためにこの仕事を行います。
"." | "!" | "~" | "*" | "'" | "(" | ")"
もよい [RFC2396] のです。それが適切にエンコードされている場合、本当に、何がGETパラメータにすることができます。