Skocz do zawartości
  • Zarejestruj się
  • 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

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

  • Kto przegląda   0 użytkowników

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

×

Ważne informacje

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.