Periurium Ответов: 0

Нет файлов журнала генерируемых из ошибки PHP API


Поэтому я задал этот вопрос на StackOverflow, и людям там, похоже, не очень понравился мой вопрос, поэтому я постараюсь подробнее остановиться здесь.

Таким образом, моя текущая проблема исходит из PHP API, который я создаю для обработки аутентификации пользователей. В настоящий момент я знаю, что он небезопасен во многих различных отношениях (например, SQL-инъекции) Но это то, что я исправлю со временем. Это мой первый раз, когда я пишу что-то подобное, и я хотел просто доказать себе, что это действительно работает, а затем медленно начать строить оттуда.

Всякий раз, когда я выполняю свой запрос от клиента Javascript и отправляю его в свой PHP API, я получаю это в качестве ответа



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at 
 [no address given] to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache/2.4.29 (Ubuntu) Server at rest.localhost Port 80</address>
</body></html>




Что странно для меня, так это то, что в моих журналах ошибок нет никаких ошибок.

Я проверил все журналы в /var/log/apache и /var/log/mysql

Ни один из них не показывает никакой информации об ошибках. Мой файл журнала доступа MySQL обычно показывал, что у меня есть логин пользователя, но я ничего не делаю, а затем выхожу из системы. Теперь нет логина от пользователя, который должен был бы войти в систему.

Мой PHP API в настоящее время выглядит так:

-rest/
  -inc/
    -conn.php
    -config.php
    -user.php
  -user_handle.php


user_handle.php

<?php 

    error_reporting(-1);

    include_once("inc/config.php");
    include_once("inc/user.php");
    include_once("inc/conn.php");

    $user = new User();

    header("Content-Type:application/json; charset=UTF-8;");

    $json_str = file_get_contents('php://input');
    return $json_str;
    $obj = json_decode($json_str);

    if($obj->type === "reg") {
        $email = $obj->email;
        $password = $obj->password;
        $ip = $obj->ip;

        $sub_user = $user->register($email, $password, $ip);
        return $sub_user;
    }  else {
        return "Error";
    }

?>


config.php

<?php 

    // MySQL Connection 

    class Dbset {

        protected $serverName;
        protected $userName;
        protected $passCode;
        protected $dbName;

        function dbset() {
            $this->serverName = 'localhost';
            $this->userName = 'mimbl';
            $this->passCode = 'password';
            $this->dbName = 'mimbl';
        }
    }

    // End of MySQL Connection 

    
?>


conn.php

<?php 

    include_once('config.php');

    class MySQL extends Dbset{

        var $myconn;

        function connect() {
            $dbConfig = new Dbset();

            $con = mysqli_connect("".$dbConfig->serverName."", "".$dbConfig->userName."", "".$dbConfig->passCode."", "".$dbConfig->dbName."");
            if (!$con) {
                die('Could not connect to database!');
            } else {
                $this->myconn = $con;
                echo 'Connection established!';}
            return $this->myconn;
        }
        function close() {
            mysqli_close($myconn);
            echo 'Connection closed!';
        }

    }
?>


user.php

<?php 

    include "conn.php";

    

    class User {
           
        
        public $password;
        public $email;
        public $ip;


        // User Registration
        function register($email, $password, $ip) {
            $dbC = new MySQL();

            $dbC->connect();

            $query = "INSERT INTO users (`email`, `pass`, `ip`) VALUES ('".$email.", '".$password."', '".$ip."')";
            
            $result = $dbC->myconn->query($query);

            if ($result === TRUE) {
                return "Success";
            } else {
                return "Error";
            }
        }

    }


?>


Если Вам также интересно узнать о вопросе StackOverflow, вы можете найти это Здесь

Любые предложения и помощь будут оценены по достоинству

Что я уже пробовал:

Включение более глубокого протоколирования ошибок в Apache, PHP и MySQL

Richard Deeming

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

PHP: SQL-инъекция - руководство пользователя[^]

Richard Deeming

Вы также храните пароли в виде обычного текста. Не делай этого.
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]

PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]

Richard Deeming

И я надеюсь, что вы не собираетесь использовать этот IP-адрес для проверки в будущем? Потому что у большинства людей нет "фиксированного" IP-адреса; он будет меняться довольно регулярно.

0 Ответов