【问题标题】:ionic 3 HTTP-GET connect with input username and password for access to php pageionic 3 HTTP-GET 连接输入用户名和密码以访问 php 页面
【发布时间】:2018-01-29 21:08:52
【问题描述】:

我想要做的是在这个 http 获取请求中添加一个密码、用户名标题。如果用户名和密码正确,则让 .php 页面允许该功能。我已经看到很多关于基本授权和发布数据的标题的答案。我想要做的是为这个 http 获取请求添加一些基本的安全性。

数据.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”)

我在网上找到的答案似乎无法解决问题。

【问题讨论】:

    标签: javascript php http-headers


    【解决方案1】:

    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() 检查,因为在用户有机会在浏览器的基本身份验证对话框中输入其用户名和密码之前,该页面将至少被请求一次.有关isset 的更多信息,请参阅PHP manual

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      相关资源
      最近更新 更多