javascript - ionic 3 HTTP-GET 连接输入用户名和密码以访问 php 页面

标签 javascript php http-headers

我想要做的是向此 http get 请求添加密码、用户名 header 。如果用户名和密码正确,则让 .php 页面允许该功能。我看到了很多有关基本授权和发布数据 header 的答案。我想做的是为这个 http get 请求添加一些基本的安全性。

数据.ts

getData() {     
    let headers = new Headers({ 'Content-Type':'*/*' });
    headers.append('Authorization', 'Basic' + (loginname + ':' + password) );
    this.http.get('https:data.php', { headers: headers }, {})
    .map(res => res.json())
    .subscribe(data => {
    console.log(data.data);
},
    err => {
    this.connectionAlert();
});

}

数据.php

<?php
$login = ‘loginname’;  // move to lib config
$pass = ‘password’;  // move to lib config 

if (!isset($_SERVER['PHP_AUTH_PW']!= $pass || $_SERVER['PHP_AUTH_USER'] != $login)) {
    header('WWW-Authenticate: Basic realm="My Site"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'User not allowed';
    exit;
} else {
    echo "<p>Sucess</p>";

}

?>

我的错误是

不能对表达式的结果使用 isset()(可以使用“null !== expression”代替)

我在网上找到的答案似乎并不能解决问题。

最佳答案

isset 用于测试变量是否存在,而不是将其与另一个值进行比较。您必须将比较作为 if 语句的单独部分进行:

if (
    !isset($_SERVER['PHP_AUTH_PW'])
    || $_SERVER['PHP_AUTH_PW'] !== $pass
    || !isset($_SERVER['PHP_AUTH_USER'])
    || $_SERVER['PHP_AUTH_USER'] !== $login
) {
    header('WWW-Authenticate: Basic realm="My Site"');

在使用服务器变量之前检查它是否存在总是一个好主意。在这种情况下,如果用户直接在浏览器中访问该页面,则需要进行 !isset() 检查,因为在用户有机会输入用户名之前,该页面将至少被请求一次和密码在浏览器的基本身份验证对话框中。请参阅PHP manual有关 isset 的更多信息。

为了确保安全的用户名和密码检查,我建议使用严格的比较 !== 运算符。不确定这是否与您的用例相关,但请注意,基本身份验证以纯文本形式传输用户名和密码,并且仅在与 https 一起使用时通过互联网才安全。

此外,我必须将前两行中的引号更改为纯 ' 字符才能测试此代码:

$login = 'loginname';  // move to lib config                                     
$pass = 'password';  // move to lib config     

关于javascript - ionic 3 HTTP-GET 连接输入用户名和密码以访问 php 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510002/

相关文章:

php & jquery 上传图片并即时预览显示

c# - 是否可以在 C# 中更改 HTTP header 的顺序(使用任何外部库)?

javascript - HTML Canvas 和 Javascript - 悬停和单击事件

javascript - 使用 - jQuery 检测标签更改

javascript - 最大高度 div 和 div 中以及 div 中的段落

javascript - 来自数据数组的 Highcharts 类别

php - 使用 php 和 javascript 的购物车,无需数据库

http-headers - 访问控制最大年龄与缓存控制

amazon-web-services - 如何在 AWS API Gateway 中生成 Set-Cookie 集成响应 header ?

javascript - 在javascript中动态分配和定位DIVS