РЕШЕНО Помогите проверить файл на уязвимости

monikrus

Участник
config.php Помогите проверить файл на уязвимости

<?PHP
$_OPTIMIZATION["title"] = "Аккаунт - Настройки";
$usid = $_SESSION["user_id"];
$db->Query("SELECT * FROM db_users_a WHERE id = '$usid'");
$user_data = $db->FetchArray();
?>
<div class="s-bk-lf">
</div>
<div class="silver-bk">
<div class="title2">Настройки</div>
<div class="clr"></div>

<center><b>Смена пароля</b></center>
<BR />
<?PHP
if(isset($_POST["old"])){

$old = $func->IsPassword($_POST["old"]);
$new = $func->IsPassword($_POST["new"]);

if($old !== false AND strtolower($old) == strtolower($user_data["pass"])){

if($new !== false){

if( strtolower($new) == strtolower($_POST["re_new"])){

$db->Query("UPDATE db_users_a SET pass = '$new' WHERE id = '$usid'");

echo "<center><font color = 'green'><b>Новый пароль успешно установлен</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Пароль и повтор пароля не совпадают</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Новый пароль имеет неверный формат</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Старый паполь заполнен неверно</b></font></center><BR />";

}

if(!empty($_FILES)){

$filename=$_FILES['my_files']['name'];
$filetype=$_FILES['my_files']['type'];
$filename = strtolower($filename);
$filetype = strtolower($filetype);

//check if contain php and kill it
$pos = strpos($filename,'php');
if(!($pos === false)) {
die('error');
}




//get the file ext

$file_ext = strrchr($filename, '.');


//check if its allowed or not
$whitelist = array(".jpg",".jpeg",".gif",".png");
if (!(in_array($file_ext, $whitelist))) {
die('not allowed extension,please upload images only');
}


//check upload type
$pos = strpos($filetype,'image');
if($pos === false) {
die('error 1');
}
$imageinfo = getimagesize($_FILES['my_files']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
die('error 2');
}
//check double file type (image with comment)
if(substr_count($filetype, '/')>1){
die('error 3');
}

// upload to upload direcory
$uploaddir = 'avp/';

if (file_exists($uploaddir)) {
} else {
mkdir( $uploaddir, 0777);
}
//change the image name
$uploadfile = $uploaddir . $usid . $file_ext;



if (move_uploaded_file($_FILES['my_files']['tmp_name'], $uploadfile)) {
$db->Query("UPDATE db_users_a SET user_avp='".$usid.$file_ext."' WHERE id='$usid'");
echo '<h2>Аватар успешно изменён!</h2>';
} else {
echo "error";
}
}

?>


<form action="" method="post">
<table width="330" border="0" align="center">
<tr>
<td><b>Старый пароль:</b></td>
<td align="center"><input type="password" name="old" /></td>
</tr>
<tr>
<td><b>Новый пароль:</b></td>
<td align="center"><input type="password" name="new" /></td>
</tr>
<tr>
<td><b>Повтор пароля:</b></td>
<td align="center"><input type="password" name="re_new" /></td>
</tr>
<tr>
<td align="center" colspan="2"><BR /><input type="submit" value="Сменить пароль" /></td>
</tr>
</table>
</form>
<BR />
<div class="panel-footer"> Поле Пароль должно иметь от 6 до 20 символов (только англ. символы) </div>
<div class="clr"></div>

</div>
 

CRAFTGAMING

Участник
Местный
config.php Помогите проверить файл на уязвимости

<?PHP
$_OPTIMIZATION["title"] = "Аккаунт - Настройки";
$usid = $_SESSION["user_id"];
$db->Query("SELECT * FROM db_users_a WHERE id = '$usid'");
$user_data = $db->FetchArray();
?>
<div class="s-bk-lf">
</div>
<div class="silver-bk">
<div class="title2">Настройки</div>
<div class="clr"></div>

<center><b>Смена пароля</b></center>
<BR />
<?PHP
if(isset($_POST["old"])){

$old = $func->IsPassword($_POST["old"]);
$new = $func->IsPassword($_POST["new"]);

if($old !== false AND strtolower($old) == strtolower($user_data["pass"])){

if($new !== false){

if( strtolower($new) == strtolower($_POST["re_new"])){

$db->Query("UPDATE db_users_a SET pass = '$new' WHERE id = '$usid'");

echo "<center><font color = 'green'><b>Новый пароль успешно установлен</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Пароль и повтор пароля не совпадают</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Новый пароль имеет неверный формат</b></font></center><BR />";

}else echo "<center><font color = 'red'><b>Старый паполь заполнен неверно</b></font></center><BR />";

}

if(!empty($_FILES)){

$filename=$_FILES['my_files']['name'];
$filetype=$_FILES['my_files']['type'];
$filename = strtolower($filename);
$filetype = strtolower($filetype);

//check if contain php and kill it
$pos = strpos($filename,'php');
if(!($pos === false)) {
die('error');
}




//get the file ext

$file_ext = strrchr($filename, '.');


//check if its allowed or not
$whitelist = array(".jpg",".jpeg",".gif",".png");
if (!(in_array($file_ext, $whitelist))) {
die('not allowed extension,please upload images only');
}


//check upload type
$pos = strpos($filetype,'image');
if($pos === false) {
die('error 1');
}
$imageinfo = getimagesize($_FILES['my_files']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime'] != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
die('error 2');
}
//check double file type (image with comment)
if(substr_count($filetype, '/')>1){
die('error 3');
}

// upload to upload direcory
$uploaddir = 'avp/';

if (file_exists($uploaddir)) {
} else {
mkdir( $uploaddir, 0777);
}
//change the image name
$uploadfile = $uploaddir . $usid . $file_ext;



if (move_uploaded_file($_FILES['my_files']['tmp_name'], $uploadfile)) {
$db->Query("UPDATE db_users_a SET user_avp='".$usid.$file_ext."' WHERE id='$usid'");
echo '<h2>Аватар успешно изменён!</h2>';
} else {
echo "error";
}
}

?>


<form action="" method="post">
<table width="330" border="0" align="center">
<tr>
<td><b>Старый пароль:</b></td>
<td align="center"><input type="password" name="old" /></td>
</tr>
<tr>
<td><b>Новый пароль:</b></td>
<td align="center"><input type="password" name="new" /></td>
</tr>
<tr>
<td><b>Повтор пароля:</b></td>
<td align="center"><input type="password" name="re_new" /></td>
</tr>
<tr>
<td align="center" colspan="2"><BR /><input type="submit" value="Сменить пароль" /></td>
</tr>
</table>
</form>
<BR />
<div class="panel-footer"> Поле Пароль должно иметь от 6 до 20 символов (только англ. символы) </div>
<div class="clr"></div>

</div>
Заливать нужно в php
 

CRAFTGAMING

Участник
Местный
Вот это убрать?
if (move_uploaded_file($_FILES['my_files']['tmp_name'], $uploadfile)) {
$db->Query("UPDATE db_users_a SET user_avp='".$usid.$file_ext."' WHERE id='$usid'");
echo '<h2>Аватар успешно изменён!</h2>';
} else {
echo "error";
}
Подождешь я после ночной смены,как проснусь скину исправленный код.
 
  • Like
Реакции: Nows

Nows

Местный
Пользователь получил предупреждение за оффтоп
PHP:
<?php
    $uid = $_SESSION['logged_user']->id;
    $myaccount = R::load('users', $uid);
    echo $myaccount->email;
?>
Так безопасно вытаскивать данные для заполнения профиля?
 

CRAFTGAMING

Участник
Местный
PHP:
<?PHP

$_OPTIMIZATION["title"] = "Аккаунт - Настройки";

$usid = $_SESSION["user_id"];

$db->Query("SELECT * FROM db_users_a WHERE id = '$usid'");

$user_data = $db->FetchArray();

?>

<div class="s-bk-lf">

</div>

<div class="silver-bk">

<div class="title2">Настройки</div>

<div class="clr"></div>   



<center><b>Смена пароля</b></center>

<BR />

<?PHP

    if(isset($_POST["old"])){

  

        $old = $func->IsPassword($_POST["old"]);

        $new = $func->IsPassword($_POST["new"]);

      

            if($old !== false AND strtolower($old) == strtolower($user_data["pass"])){

          

                if($new !== false){

              

                    if( strtolower($new) == strtolower($_POST["re_new"])){

                  

                        $db->Query("UPDATE db_users_a SET pass = '$new' WHERE id = '$usid'");

                      

                        echo "<center><font color = 'green'><b>Новый пароль успешно установлен</b></font></center><BR />";

                  

                    }else echo "<center><font color = 'red'><b>Пароль и повтор пароля не совпадают</b></font></center><BR />";

              

                }else echo "<center><font color = 'red'><b>Новый пароль имеет неверный формат</b></font></center><BR />";

          

            }else echo "<center><font color = 'red'><b>Старый паполь заполнен неверно</b></font></center><BR />";

      

    }
?>





<form action="" method="post">

<table width="330" border="0" align="center">

  <tr>

    <td><b>Старый пароль:</b></td>

    <td align="center"><input type="password" name="old" /></td>

  </tr>

  <tr>

    <td><b>Новый пароль:</b></td>

    <td align="center"><input type="password" name="new" /></td>

  </tr>

  <tr>

    <td><b>Повтор пароля:</b></td>

    <td align="center"><input type="password" name="re_new" /></td>

  </tr>

  <tr>

    <td align="center" colspan="2"><BR /><input type="submit" value="Сменить пароль" /></td>

  </tr>

</table>

</form>

<BR />

<div class="panel-footer"> Поле Пароль должно иметь от 6 до 20 символов (только англ. символы) </div>

<div class="clr"></div>



</div>
 
Верх