Php 网络安全有问题吗

Php 网络安全有问题吗,php,security,authentication,web,login,Php,Security,Authentication,Web,Login,我网站的登录网页不安全,每当在firefox的登录页面上键入用户名或密码时,我都会看到一个对话框,上面写着: 连接不安全。在此输入的登录名可能会被泄露 我应该尝试准备好的声明,还是有其他问题?抱歉,这是一个广泛的问题,但我对网络安全不太熟悉 这是我的登录页面代码: <?php include("connect.php"); include('PHPMailer/PHPMailer-master/examples/gmail_xoauth.phps'); if (isset($_P

我网站的登录网页不安全,每当在firefox的登录页面上键入用户名或密码时,我都会看到一个对话框,上面写着:

连接不安全。在此输入的登录名可能会被泄露

我应该尝试准备好的声明,还是有其他问题?抱歉,这是一个广泛的问题,但我对网络安全不太熟悉

这是我的登录页面代码:

<?php 
include("connect.php"); 
include('PHPMailer/PHPMailer-master/examples/gmail_xoauth.phps');
   if (isset($_POST['createaccount'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        $email = $_POST['email'];
        if (!connect::query('SELECT username FROM accounts WHERE username=:username', array(':username'=>$username))) {
                if (strlen($username) >= 3 && strlen($username) <= 32) {
                        if (preg_match('/[a-zA-Z0-9_]+/', $username)) {
                                if (strlen($password) >= 6 && strlen($password) <= 60) {
                                if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                if (!connect::query('SELECT email FROM accounts WHERE email=:email', array(':email'=>$email))) {

                                        connect::query('INSERT INTO accounts VALUES (null, :username, :password, :email, \'0\')', array(':username'=>$username, ':password'=>password_hash($password, PASSWORD_BCRYPT), ':email'=>$email));
                                        gmail_xoauth::sendMail('Welcome to the Website!', 'Your account has been created!', $email);
                                        echo "<h3 class = 'errmessage'>Success!</h3>";


                                } else {
                                        echo '<h3 class = "errmessage">Email already in use!</h3>';
                                }
                        } else {
                                        echo '<h3 class = "errmessage">Invalid email!</h3>';
                                }
                        } else {
                                echo '<h3 class = "errmessage">Invalid password, at least 6 characters!</h3>';
                        }
                        } else {
                                echo '<h3 class = "errmessage">Invalid username, at least 3 characters</h3>';
                        }
                } else {
                        echo '<h3 class = "errmessage">Invalid username</h3>';
                }
        } else {
                echo '<h3 class = "errmessage">User already exists!</h3>';
        }
    }

    if (isset($_POST['login'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        if (connect::query('SELECT username FROM accounts WHERE username=:username', array(':username'=>$username))) {
                if (password_verify($password, connect::query('SELECT password FROM accounts WHERE username=:username', array(':username'=>$username))[0]['password'])) {
                        $cstrong = True;
                        $token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong));
                        $user_id = connect::query('SELECT id FROM accounts WHERE username=:username', array(':username'=>$username))[0]['id'];
                        connect::query('INSERT INTO users VALUES (null, :token, :user_id)', array(':token'=>sha1($token), ':user_id'=>$user_id));
                        setcookie("SNID", $token, time() + 60 * 60 * 24 * 7, '/', NULL, NULL, TRUE);
                        setcookie("SNID_", '1', time() + 60 * 60 * 24 * 3, '/', NULL, NULL, TRUE);
        setcookie("username", $username, time()+3600);
        header("Location: home.php");

                } else {
                        echo '<h3 class = "errmessage">Incorrect Password!Try again</h3><br><br><br>';
                }
        } else {
                echo '<h3 class = "errmessage">User not registered!Try again</h3><br><br><br>';
        }


    }

?> 

Firefox为未使用HTTPS提供服务的页面上的表单元素添加了此警告,并确定这些表单元素用于敏感信息。这在Firefox52上进行了现场直播。有关更多信息,请参阅和。

Firefox为未使用HTTPS的页面上的表单元素添加了此警告,并确定这些表单元素用于敏感信息。这在Firefox52上进行了现场直播。有关更多信息,请参阅和。

这是因为您在非页面上有一个密码字段,这意味着您的页面通过
http
而不是
https
提供服务。您可以了解更多关于Firefox方面的信息。这可以通过向服务器添加SSL证书来解决


有些证书需要花钱,但你可以查看免费证书。付费证书和Let's Encrypt证书的主要区别在于有效期的长短。在撰写本文时,它们的有效期仅为3个月,但是有一些工具可以自动续订。

这是因为您在非页面上有一个密码字段,这意味着您的页面是通过
http
而不是
https
提供的。您可以了解更多关于Firefox方面的信息。这可以通过向服务器添加SSL证书来解决


有些证书需要花钱,但你可以查看免费证书。付费证书和Let's Encrypt证书的主要区别在于有效期的长短。在撰写本文时,它们的有效期仅为3个月,但是有一些工具可以自动更新。

它指的是不使用https(ssl)。这与您的代码无关好的,我会调查一下,除了给出的答案之外,还有其他因素需要考虑,例如文件/脚本/图像包含,如果它们是硬编码的
http://
引用,也会导致问题。尽管它没有直接回答这个问题,但它确实有相关性。它指的是不使用https(ssl)。这与您的代码无关好的,我会调查一下,除了给出的答案之外,还有其他因素需要考虑,例如文件/脚本/图像包含,如果它们是硬编码的
http://
引用,也会导致问题。尽管它没有直接回答这个问题,但它确实具有相关性。
<?php
class connect
{
    private static function db()
    {
        $pdo = new PDO('mysql:host=localhost;dbname=database_name;charset = utf8','username','password');

        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    return $pdo;
}

    public static function query($query,$params = array())
    {

        $statement = self :: db()->prepare($query);
        $statement->execute($params);
        if(explode(' ',$query)[0] == 'SELECT')
        {
            $data = $statement->fetchAll();
            return $data;
        }

    }

}

?>