【问题标题】:How to hide my API key between PHP and Javascript?如何在 PHP 和 Javascript 之间隐藏我的 API 密钥?
【发布时间】:2016-07-14 05:13:24
【问题描述】:

这是我在 Reactjs 中面临的一个挑战,尽管我不认为它必然归因于它。我正在尝试在 React 中进行 API 调用。虽然它有效,但代码还显示了我的 API 密钥,下面由我的 javascript 变量 sting 指示。当我在浏览器中预览代码时,sting 非常清楚地显示了我的 API 密钥。

render: function() {
    if (this.state.trial) {
      return this.iftroo();
    }
  } 
});

var Troo = React.createClass({
render: function() {
  var sting = "<?php
  $con = mysqli_connect('localhost', 'root', '', 'worldly') or die("Trying");
  $query = "select * from testi";
  $result = mysqli_query($con, $query);
  while($row = mysqli_fetch_array($result)){
  echo $row["userName"];}
  ?>";  
  var weather = new XMLHttpRequest();
  weather.open("GET", "http://api.openweathermap.org/data/2.5/weather?q=London,uk&units=imperial&appid="+sting, false);
  weather.send(null);
  var r = JSON.parse(weather.response);
  var tempurature = r.main.temp;

  return (
    <p>
      {tempurature}
    </p>

我知道为了让它工作,我可能必须在我的 PHP 中嵌入我的 javascript 代码。但是,这样做会导致错误,例如 PHP 无法识别 javascript var 字符。

我可以采取哪些措施来对浏览器隐藏我的 API 密钥?

【问题讨论】:

  • 会发现许多 API 不提供 CORS 或 jsonp 支持,因此您不会在浏览器中公开凭据

标签: javascript reactjs


【解决方案1】:

如果您想对浏览器隐藏 API 密钥,那么您必须永远不要将其提供给浏览器

您不能使用来自客户端 JavaScript 的 API 密钥并将其对客户端隐藏。

从您的服务器发出任何需要使用它的 HTTP 请求(例如,使用 PHP 的 cURL 库)。

【讨论】:

    【解决方案2】:

    您可以为特殊用户生成一次性 jwt api 密钥,包括过期时间以及分配给它的任何信息。

    编辑

    好的,现在我明白了,api 密钥是用于外部服务的。不知道天气服务的政策如何,但是..我认为这不是正确的方法,你应该在服务器上提出这个请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-10
      • 2016-11-25
      • 2021-08-05
      • 2016-11-09
      • 2012-04-03
      • 1970-01-01
      • 2021-01-27
      • 2020-04-15
      相关资源
      最近更新 更多