0

Apache 2.2のhttpd.confで書き換えルール条件を使用してクエリ文字列からパラメータを取得し、それをCookieとして書き込むシナリオがあります。

CustomLog "/www/apache/ndipiazza/logs/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b \"%{Cookie}i\""

RewriteEngine On
RewriteCond %{QUERY_STRING} CID=(.*)
RewriteRule .* - [L,CO=COOKIE_CID:%1:ndipiazza-local.com:50000] 

たとえば、URL「http://ndipiazza-local/mypage.jsp?CID=NickDogg」はCookie「COOKIE_CID=NickDogg」を作成します

ただし、このCookieをクリアテキストとして保存できないという制限があるため、このソリューションを完全に使用することはできません。現在のところ、ログにはクリアテキストとして書き込み、Cookieはクリアテキストとして書き込みます。エンコードする必要があります。

保存されているCookieをapacheにエンコードさせる方法はありますか?

4

1 に答える 1

1

はい、これを行う方法があります。

これには、MapType "prg" の RewriteMap を使用します。

したがって、次のように RewriteMap を定義します

RewriteEngine On 
RewriteMap encode-map prg:/path/to/encode_script 
RewriteCond %{QUERY_STRING} UID=(.*) 
RewriteRule .* - [L, CO=COOKIE_CID:${encode-map:%1}:ndipiazza-local.com:50000] 

/path/to/encode_script はシステム上のスクリプトであり、apache の起動時に一度開始され、改行で終了する文字列を取得してエンコードし、stdout バッファリングなしで改行でエンコードされた文字列を出力する必要があります。

詳細と例については、http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html の「External Rewriting Program」セクションと、 http: //httpd.apache.org/ の「prg」の例を参照してください。 docs/2.0/rewrite/rewrite_guide.htmlおよびhttp://httpd.apache.org/docs/2.0/rewrite/rewrite_guide_advanced.html

于 2012-06-11T19:14:47.200 に答える