suke0527
@suke0527 (い すけ)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

GoogleMap のAPI_KEYが見えてしまう

解決したいこと

API_KEYがブラウザのソースに表示されてしまうこと

【概要】
Ruby on RailsのアプリにGoogleMapの表示を試みたところ、表示させたページのソースを見ると、API_KEYがむき出しになってしまう。
開発環境、デプロイ後も変わらない。

参考にしたページその1
https://zenn.dev/takuyanagai0213/articles/e2467175bdd5fc

参考にしたページその2
https://note.com/mosanei/n/n460548e2a62b

解決方法を教えて下さい。

発生している問題・エラー

ソースの表示
<script async defer src="https://maps.googleapis.com/maps/api/js?key=ここにAPI_KEYがそのまま表示されてしまう&callback=initMap"></script>

使用環境
Rails 7.0.4
Ruby 3.0.1

インストールされているgem
gem 'kaminari'
gem 'gon'
gem 'geocoder'
gem 'dotenv-rails'
gem 'gmaps4rails'
gem 'mini_racer'
gem "dockerfile-rails", ">= 1.0", :group => :development
gem "pg", "~> 1.4"
/index.html.erbの記述(一部)

<style>
#map {
  height: 600px;
  width: 500px;
}
</style>

<%= javascript_include_tag 'users.js' %>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=<%= ENV['Map_API_KEY'] %>&callback=initMap"></script>


/users.js

function initMap() {
  // 地図を表示する要素を取得
  const mapElement = document.getElementById("map");
  // 地図の初期化
  const map = new google.maps.Map(mapElement, {
    center: { lat: 34., lng: 138. }, // 中心
    zoom: 13, // ズームレベル
  });

}
/env

# Google map用
Map_API_KEY = "私のAPI_KEY"
.gitignore
/.env # 追記

自分で試したこと

/geocoder.rb

Geocoder.configure(
 # Geocoding options
 # timeout: 3,                 # geocoding service timeout (secs)
 lookup: :google, 👈 これ        # name of geocoding service (symbol) 
 # ip_lookup: :ipinfo_io,      # name of IP address geocoding service (symbol)
 # language: :en,              # ISO-639 language code
 use_https: true,  👈 これ         # use HTTPS for lookup requests? (if supported)
 # http_proxy: nil,            # HTTP proxy server (user:pass@host:port)
 # https_proxy: nil,           # HTTPS proxy server (user:pass@host:port)
 api_key: ENV['MAP_API_KEY'],   👈 これ            # API key for geocoding service
 # cache: nil,                 # cache object (must respond to #[], #[]=, and #del)
 # cache_prefix: 'geocoder:',  # prefix (string) to use for all cache keys
 # Exceptions that should not be rescued by default
 # (if you want to implement custom error handling);
 # supports SocketError and Timeout::Error
 # always_raise: [],
 # Calculation options
 # units: :mi,                 # :km for kilometers or :mi for miles
 # distances: :linear          # :spherical or :linear
)

geocoder.rbの上記3つをコメントアウトしても、しなくても変わらない。

一度デプロイしてしまったAPI_KEYは再発行しました。

0

1Answer

一般的に API キーは公開してはいけませんが、 Google Maps の API キーは web ページに埋め込んで使うのが前提のため公開しても構いません。

ただし、キーの不正利用を防ぐため、埋め込んだサイトから発行されたリクエストだけ受け付けるようにキーに制限をかけることが強く推奨されています。詳しくは以下のページを参照してください。

4Like

Comments

  1. @suke0527

    Questioner

    ご回答ありがとうございます!
    ご指摘のページより設定を行おうと思います。
    助かりました。

Your answer might help someone💌