【问题标题】:Deny all but only allow access from Angularjs on the same server拒绝所有但只允许来自同一服务器上的 Angularjs 的访问
【发布时间】:2017-09-21 07:00:04
【问题描述】:

我在没有虚拟主机的同一台服务器上有一个 Lumen 后端和一个 Angularjs 项目。我访问 API 的方式很简单,就是通过 www.example.com/api/public/get_some_data 之类的 URL。我想对公众隐藏这些端点,但只允许从 Angularjs 访问。

我尝试将此添加到 api/public 文件夹中的 .htaccess,

Order deny, allow
Deny from all
Allow from 127.0.0.1

但 Angular 也会被拒绝。

我像这样从 Angular 访问端点,

function login(user) {
  return $http({
    method: 'POST',
    url: 'api/public/login/user',
    data: user,
    headers: {'Content-Type': 'application/json'}
  }).then(function(response){
    console.log(response);
    localStorage.setItem('token', response.data.token);
  }).catch(dataServiceError);
}

【问题讨论】:

    标签: angularjs .htaccess lumen


    【解决方案1】:

    Angular 是客户端框架。如果请求来自 Angular 应用程序或其他任何地方,服务器没有区别。

    可以根据客户端应用程序可以满足的某些条件限制访问,例如请求标头 (example)。

    通过默默无闻的安全是最弱的安全形式,不应依赖。在这种情况下,一个合适的解决方案是基本身份验证或基于令牌的身份验证。

    不过,如果入侵者可以访问 Angular 应用程序,他或她会自动获得对 API 端点的访问权,并可以从应用程序中提取身份验证信息。

    【讨论】:

    • 谢谢,伙计。这就是我想知道的。我已经实现了令牌认证。只是想隐藏一些 Angular 消耗的数据。
    • 如果入侵者可以访问应用程序,您将无法隐藏任何内容。另一方面,如果您担心任何人都可以在他/她的网站上使用此 API,这是另一个问题,CORS 解决了这个问题。
    • 这是否意味着所有 Angular 代码实际上对用户来说都是透明的,因为它在客户端?
    • 是的。客户端JS没有安全性。如果客户端代码应该受到保护,它必须在服务器端受密码保护(基本身份验证等)。
    猜你喜欢
    • 2014-07-15
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    相关资源
    最近更新 更多