2016-05-05 4 views
-2

У меня есть сервер электронной почты с веб-интерфейсом для входа в систему, однако ранее у меня не было эффективного способа регистрации пользователей с сервером, чтобы создать пользователей для входа в систему. По этой причине я создал систему PHP для создания пользователей и задал пароли, однако, создав указанную систему, я знаю, что имеет серьезную проблему безопасности, поскольку сервер выполнит скрипт, который создает пользователя, а затем изменит указанные пароли пользователей. Таким образом, люди могут изменять пароли разных пользователей. На данный момент я создал корневую безопасность, но мне нужно постоянное решение этой проблемы, чтобы защитить мои электронные письма пользователей. Вот скрипт php и сценарий оболочки, который я использую для создания и установки паролей пользователей.Создание пользователя Linux + PHP и электронная почта

index.php

<?php 
$user=$_POST['user']; 
$pass=$_POST['pass']; 
$check=$_POST['check']; 

if(isset($_POST['submit'])) { 
    if($user!="root"){ 
    if($pass == $check) { 

    echo exec ("sudo /root/bin/newuser.sh ".$user." ".$pass.""); 
    echo ("<html> <title>User Created!</title> <p><h1>Congratulation on the successful creation of your user! </h1></p><p><h1>Your login credentials are as follows:</h1></p><p><h1>Username: ".$user."</h1></p><p><h1>Password: " .$pass."</h1></p></html>"); 

    } else { 

    echo "<html><title>Error creating account!</title><p><h1>Passwords did not match! Please <a href='index.php' reload/> this page!</h1></p></html>"; 
} 

} else { 
    echo "Stahp plox!"; 

    } 
} 
?> 

<html> 
    <p align="center">Magnum Dongs Email Registration</p> 

    <p align="center">Username will be created as [email protected], there is no need to add the @magnumdongs.com to the enter of the username you create.</p> 

    <p align="center">Upon creation, you will be able to access your email through our Magnum Dongs Email Web Interface, however you will be unable to recieve email via Outlook or an open source alternative at this time.</p> 

    <form method="POST" action="index.php" align="center"> 
    <p>Username : 
    <input name="user" type="text"/> 
    </p> 
    <p>Password : 
    <input name="pass" type="password"/> 
    </p> 
    <p>Verify &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: 
     <input name="check" type="password"/> 
    </p> 

    <input type="submit" name="submit" value="Create User" /> 
    </form> 
</html> 

newuser.sh

#!/usr/bin/env bash                                                      

    #echo "Enter username..."                                                     
    #read user                                                         

    #echo -e "Username :: $user \n Is this correct? [y,n]"                                              

    #read y                                                         

    #if [[ $y == "y" ]]; then                                                     
    #  useradd -m $user                                                     
    #else                                                          
    #  echo "Wrong username"                                                    
    #  exit                                                        
    #fi                                                          

    usr=$1                                                          
    pass=$2                                                         

    useradd -m -s /usr/bin/nologin $usr                                                  

    echo "$usr:$pass" | chpasswd 

Заранее спасибо за помощь

ответ

1

Просьба также пересмотреть свой код, чтобы предотвратить Command Injection

эхо Exec ("Суд /root/bin/newuser.sh" $ пользователя « ".»$ Передать..");

Если какой-либо пользователь отправляет запрос POST следующим образом: $_POST['user'] = '; rm -rf /;' удаляется большая часть вашего сервера. Используйте функцию escapeshellarg php для предотвращения атак оболочки.

0

Рассмотрим изменение почтовой системы для работы с виртуальными счетами и дать пользователю веб-приложения права на добавление и изменение пользователей, что было бы более безопасным, чем запуск веб-приложения в соответствии с привилегиями пользователя с правами sudo.

Смежные вопросы