Поставить защиту для скрипта

Discussion in 'Уязвимости' started by newsql, 24 Jan 2023.

  1. newsql

    newsql New Member

    Joined:
    7 Jan 2023
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Всем привет. Посмотрите пожалуйста и дайте совет, как защитить скрипт:

    PHP:

    <?php

    session_start
    ();
    define 'DOMAIN'' ' );
    define 'DATALIFEENGINE'true );
    define 'ROOT_DIR'dirname __FILE__ ) );
    define 'ENGINE_DIR'$_SERVER['DOCUMENT_ROOT'] . '/engine' );

    require_once (
    ENGINE_DIR '/classes/plugins.class.php');
    require_once (
    ENGINE_DIR.'/data/dbconfig.php');

    function 
    create_rezume_cabinet($user_id){
      global 
    $db;
      if(isset(
    $_POST['f']) && isset($_POST['fieldsStorage'])){
        try{
          
    $data trim($_POST['f']);
          
    $json_data json_decode($datatrue);
          if(
            isset(
    $json_data[0][0]) &&
            isset(
    $json_data[0][1]) &&
            isset(
    $json_data[0][2]) &&
            isset(
    $json_data[0][3]) &&
            isset(
    $json_data[0][7])
          ){
            
    $fio trim($json_data[0][0]).' '.trim($json_data[0][1]).' '.trim($json_data[0][2]);
            
    $position trim($json_data[0][3]);
            
    $email trim($json_data[0][7]);

            
    $q="SELECT * FROM " USERPREFIX "_rezume WHERE  email='$email' AND user_id='$user_id' AND fio='$fio' AND position='$position'";
            
    $sql $db->query($q);

            
    $exists false;
            while(
    $row $db->get_row($sql)){
                      
    $exists true;
            }
            if(
    $exists){

              
    $q="UPDATE  " USERPREFIX "_rezume  SET data='$data', fieldsStorage='".$_POST["fieldsStorage"]."' WHERE  email='$email' AND user_id='$user_id' AND fio='$fio' AND position='$position'";
              
    $res $db->query$q );


            }else{
              
    $code uniqid();
              
    $q="INSERT INTO " USERPREFIX "_rezume (user_id, email, fio, position, data, code, fieldsStorage)
              VALUES ('
    $user_id', '$email', '$fio', '$position', '$data', '$code', '".$_POST["fieldsStorage"]."')";
              
    $db->query$q );
            }

          }
        }catch(
    Exception $e){

        }
      }
    }


    if(isset(
    $_GET['email']) && trim($_GET['email']) !== ''){

        
    $email trim($_GET['email']);
      if(!
    filter_var($emailFILTER_VALIDATE_EMAIL)){
          
    $ret['error']=array('message'=>"Некоректный  email: ".$email."");
          die(
    json_encode($ret));
        }

        if(isset(
    $_SESSION['dle_user_id']) && isset($_SESSION['dle_password'])){

            
    create_rezume_cabinet($_SESSION['dle_user_id']);

          die();
        }

        
    $q="SELECT * FROM " USERPREFIX "_users WHERE  email='$email'";

            
    $sql $db->query$q );

            while (
    $row $db->get_row($sql)){
              
    $ret['error']=array('message'=>"Аккаунт  ".$email." уже существует!");
              die(
    json_encode($ret));
            }




        
    $name uniqid();

        
    $count_letter_pwd 8;
        
    $chars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        
    $password =substr(str_shuffle($chars), 0$count_letter_pwd);//"12345678";
        
    $regpassword $db->safesqlpassword_hash($passwordPASSWORD_DEFAULT) );
            if(
    function_exists('openssl_random_pseudo_bytes')) {
                    
    $stronghash md5(openssl_random_pseudo_bytes(15));
                } else 
    $stronghash md5(uniqidmt_rand(), TRUE ));
                
    $salt sha1str_shuffle("abcdefghjkmnpqrstuvwxyz0123456789") . $stronghash );
                
    $hash '';
           for(
    $i 0$i 9$i ++) {
                    
    $hash .= $salt[mt_rand039 )];
                }
              
                
    $hash md5$hash );

                
    $q="INSERT INTO " USERPREFIX "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip, hash)
                VALUES ('
    $name', '$regpassword', '$email', '$add_time', '$add_time', '4', '', '', '', '', '$_IP', '$hash')";

                    
    $db->query$q );
                    
    $id $db->insert_id();
                    
    create_rezume_cabinet($id);



    }
    $ret['error']=array('message'=>"unknown error");
    die(
    json_encode($ret));


    Главное как-то защитить запрос:

    PHP:
    $q="INSERT INTO " USERPREFIX "_users (name, password, email, reg_date, lastdate, user_group, info, signature, favorites, xfields, logged_ip, hash)
                VALUES ('
    $name', '$regpassword', '$email', '$add_time', '$add_time', '4', '', '', '', '', '$_IP', '$hash')";
    Чтобы никто не мог поменять цифру 4 на другую ;)
     
  2. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,405
    Likes Received:
    886
    Reputations:
    859
    Cовет!, загуглить на тематику "защита от sql инъекций"
     
    _________________________
  3. newsql

    newsql New Member

    Joined:
    7 Jan 2023
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Красава!