雑類.

無効なCSRFトークン

GeoNetworkは安全なフィルタを持ち,CSRF攻撃を防ぐことができる.このような攻撃の詳細については、https://www.owasp.org/index.php/Cross-site_request_forgery_(Csrf)をご覧ください。適切なトークンがない場合にはPOST,DELETE,PUT端点に対するすべての呼び出しがエラーを返す.

../_images/csrf2.png

デフォルトでは,すべてのAngularJS要求がこのトークンを処理するが,すべての第三者APIおよびカスタムユーザインタフェース呼び出しは,このトークンを手動で要求に追加しなければならない.トークンは、xsrf−Tokenというクッキーに格納される。クッキーは、“_CSRF”と呼ばれるパラメータまたはX−XSRF−TOKENと呼ばれるヘッダを介してすべての要求に追加されなければならない文字列を含む。

../_images/csrf1.png

CURLを用いたCSRF呼び出しの例

まず、セッションおよびCSRFを取得するためにPOSTエンドポイントを呼び出す

$rm -f /tmp/cookie; curl -c /tmp/cookie http://localhost:8080/geonetwork/srv/eng/info?type=me -X POST ; cat /tmp/cookie

   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
   <title>Error 403 Expected CSRF token not found. Has your session expired?</title>
   </head>
   <body><h2>HTTP ERROR 403</h2>
   <p>Problem accessing /geonetwork/srv/eng/info. Reason:
   <pre>    Expected CSRF token not found. Has your session expired?</pre></p><hr><a href="http://eclipse.org/jetty">Powered by Jetty:// 9.3.9.v20160517</a><hr/>

</body>
</html>
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

localhost       FALSE   /geonetwork     FALSE   0       XSRF-TOKEN      3825c5f1-49b3-4c62-bc3a-1916d5872d02

そして、クッキーとトークンを使用して、あなたがやりたいことを何でもすることができます。

 $curl -v -X POST "http://localhost:8080/geonetwork/srv/eng/info?type=me" -H "X-XSRF-TOKEN: 3825c5f1-49b3-4c62-bc3a-1916d5872d02" --user admin:admin -b /tmp/cookie
*   Trying ::1...
  * TCP_NODELAY set
    * Connected to localhost (::1) port 8080 (#0)
      * Server auth using Basic with user 'admin'
        > POST /geonetwork/srv/eng/info?type=me HTTP/1.1
        > Host: localhost:8080
        > Authorization: Basic YWRtaW46YWRtaW4=
        > User-Agent: curl/7.52.1
        > Accept: */*
        > Cookie: XSRF-TOKEN=3825c5f1-49b3-4c62-bc3a-1916d5872d02
        > X-XSRF-TOKEN: 3825c5f1-49b3-4c62-bc3a-1916d5872d02
        >
        < HTTP/1.1 200 OK
        < Date: Wed, 17 May 2017 08:52:05 GMT
        * Added cookie JSESSIONID="1na1v7dpu7d7bcsnelvh0vnvn" for domain localhost, path /geonetwork, expire 0
          < Set-Cookie: JSESSIONID=1na1v7dpu7d7bcsnelvh0vnvn;Path=/geonetwork
          < Expires: Thu, 01 Jan 1970 00:00:00 GMT
          * Added cookie serverTime="1495011125647" for domain localhost, path /, expire 0
            < Set-Cookie: serverTime=1495011125647;Path=/
            * Added cookie sessionExpiry="1495011125647" for domain localhost, path /, expire 0
              < Set-Cookie: sessionExpiry=1495011125647;Path=/
              < Content-Type: application/xml; charset=UTF-8
              < Pragma: no-cache
              < Cache-Control: no-cache
              < Expires: -1
              < Transfer-Encoding: chunked
              < Server: Jetty(9.3.9.v20160517)
              <
              <?xml version="1.0" encoding="UTF-8"?>
              <info>
                <me authenticated="true">
                  <profile>Administrator</profile>
                  <username>admin</username>
                  <id>1</id>
                  <name>admin</name>
                  <surname>admin</surname>
                  <email />
                  <organisation />
                  <hash />
                </me>
              <env>
              <baseURL>/geonetwork</baseURL>
              <node>srv</node>
            </env>
          </info>

* Curl_http_done: called premature == 0
  * Connection #0 to host localhost left intact

H 2データベースを使用

重要

以下の説明は、この方法を使用するとデータベースを破損する可能性があるので、障害を排除するためにデータベースを検査するためにのみ使用何か変更する前に、常にバックアップしてください!

デフォルトの組み込みH 2データベースを使用し、これらのテーブルをチェックする必要がある場合、グラフィックUIを使用してチェックすることができます。テストされた2つは

  • Dbeaver(http://dbeaver.io)

  • H 2独自のツール(http://www.h 2 database ase.com/html/download.html)

以下の方法でh 2ツールを用いる.

GeonNetworkデータベースを検索する

これがいわゆる gn.h2.db それがそうです。位置は、あなたが使用するWebサーバおよびデータディレクトリの位置に依存します。参照してください データベースの構成 より多くの情報を得ることができますWindowsでは、ウィンドウズのパスをご利用いただく必要がありますのでご注意ください driveletter/path/to/gn.h2.db それがそうです。

H 2ツールを使用する

プラットフォームとは独立した圧縮ファイルをhttp://www.h 2 database.com/html/download.htmlからダウンロードし、アンロック/解凍します。コマンドキューの下で、以下のディレクトリに切り替えます。

h2/bin

付属のBATやShellスクリプトを用いてデータベースにアクセスするとエラーが表示されそうなので,コマンドプロンプトを用いる方法を提案することに注意されたい.

データベースのURLを記入する。その形式は以下のとおりである.

jdbc:h2:path/to/gn

注:含まれていない .h2.db 小道の突き当たりにあります。

このツールにアクセスするために、以下のコマンドを入力します。

java -cp h2*.jar org.h2.tools.shell

システムはあなたにURLを提供することを要求して、あなたは上に記録しました。デフォルト証明書は:

  • ユーザー名:www-data

  • パスワード:www-data

以下の1つまたは別の動作を実行する必要がある場合があります。

  • GeoNetworkを閉じる

  • ロックファイルの削除 gn.lock.db

  • 以下への記入権限を付与する gn.h2.db

接続に成功すると、SQLコマンドを入力するための次のようなヒントが見られます。これらは番号で終わらなければならない。

sql>

有用なコマンド参照は、http://www.h 2 database.com/html/Commands.htmlで見つけることができます。

このツールを終了するには、キーを入力してください quit そしてEnterボタンを押してください。