Skocz do zawartości
  • 0
KaLu

Zabezpieczenia

Pytanie

Cześć, chciałbym się dowiedzieć jak zabezpieczyć ten kod przed potencjalnym SQL Injection oraz ogólnie jak zabezpieczać dane, które wpisujemy poprzez input. 

 

 

<?php
class public_game_ajax_appealsadd extends ipsAjaxCommand
{


public function doExecute( ipsRegistry $registry ) 
{ 
if(!$this->memberData['member_id'])
{
$this->registry->output->showError('Nie jesteś zalogowany.',0);
}




/* Pobieranie loga */
$this->DB->query("SELECT * FROM `1logi` WHERE `uid` = ".$this->request['log']." LIMIT 1");
$this->DB->execute(); 
$log = $this->DB->fetch();


if($log['owner'] != $this->memberData['member_id'])
{
$this->registry->output->showError('Podano błędny identyfikator kary lub kara nie należy do Ciebie.',0);
} 


/* Zapis odpowiedzi */
$_POST[ 'Post' ]    = IPSText::stripslashes( $_POST[ 'Post' ] );


   $classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );
   $editor = new $classToLoad();


   $editor->setAllowBbcode( true );
   $editor->setAllowSmilies( true );
   $editor->setAllowHtml( false );
   
   if( method_exists( $editor, 'setForceRte' ) )
   {
       $editor->setForceRte( true );
   }
    
   if( method_exists( $editor, 'setRteEnabled' ) )
   {
       $editor->setRteEnabled( true );
   }
    
   if( method_exists( $editor, 'setLegacyMode' ) )
   {
       $editor->setLegacyMode( false );
   }


$content = $editor->process( $_POST[ 'Post' ] );


   IPSText::getTextClass('bbcode')->parse_html = 0;
   IPSText::getTextClass('bbcode')->parse_nl2br = 0;
   IPSText::getTextClass('bbcode')->parse_smilies = 1;
   IPSText::getTextClass('bbcode')->parse_bbcode = 1;
   IPSText::getTextClass('bbcode')->parsing_section = 'content';


   $content = IPSText::getTextClass('bbcode')->preDbParse( $content );


if(isset($this->request['submit']))
{
$this->DB->insert( '1appeals', array( 'message' => $content, 'log_id' =>  $this->request['log'], 'start_date' => time(), 'admin' => $log['admin'], 'member_id' => $this->memberData['member_id'], 'log_reason' => $log['text'], 'log_add' => $log['addtime'], 'log_typ' => $log['typ'], 'log_expires' => $log['expires']) ); 
} 
$this->registry->output->silentRedirect('index.php?app=game&modules=game&section=appeals');
}
}
?>
Edytowano przez Karol170396

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

3 odpowiedzi na to pytanie

Polecane posty

  • 0

Przede wszystkim jak coś ma być liczbą stałą to dajesz:

$zmienna = intval( $this->request[ 'zmienna' ] );

i sprawdzasz, później czy jest równa 0 jeśli tak, a nie przewidywałeś takiej wartości to jest błąd....

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

ok a jeżeli z inputa dodaję do bazy tekst w zapytaniu $this->DB->insert, to jakieś addslashes czy coś? 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Nie, jeśli użyjesz metody insert, update, to nie musisz dodawać slashy, jedyne co to musisz sobie zweryfikować, czy te pola zawierają takie dane jak chciałeś...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony


  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.