Webboard

Pełna wersja: Sql injection mybb
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Robię pewien skrypt w podstronie mybb, który wykorzystuje dane z formularza, a później sprawdza czy są one w bazie.
I teraz pojawia się pytanie czy ten kod jest odporny na sql injection?
Kod PHP:
$login_ss $_POST['login'];
$pass_ss $_POST['password'];
$login_ss htmlentities($login_ssENT_QUOTES"UTF-8");
$pass_ss htmlentities($pass_ssENT_QUOTES"UTF-8");
$pass_ss md5($pass_ss);
$pass_ss $db->escape_string($pass_ss);
$login_ss $db->escape_string($login_ss);
$checkquery_ss $db->query("
SELECT pPass, pName, pID 
FROM Tabela
WHERE pName = '
$login_ss' AND pPass = '$pass_ss'
LIMIT 1
"
);
$checkstatus_ss mysqli_num_rows($checkquery_ss);
echo 
'Status to: ' .$checkstatus_ss
piszesz to przez mybb?
jest dziurawe, caly czas w polu textowym podajac wartosci ze shlesami możemy robić co chcemy
@Up, tak mam taki kod:
Kod PHP:
<?php
define
('IN_MYBB'1); 
require 
"./global.php"
if(
$sparredstatus == 1)
{
    
header('Location: index.php');
    exit();
}
add_breadcrumb("Integracja konta z serwerem""connectws.php");
$ug $mybb->user['usergroup'];
if(
$ug == '1' || $ug == '7')
{
    
error_no_permission();
    eval(
"\$podstr = \"".$templates->get("connectws")."\";"); 
    
output_page($podstr); 
    exit();
}
else
{
    if(
$_POST['login'] && $_POST['password'])
    {
         if(
$ug == '1' || $ug == '7' || $sparredstatus == 1)
        {
            
error_no_permission();
            eval(
"\$podstr = \"".$templates->get("connectws")."\";"); 
            
output_page($podstr); 
            exit();
        }
        else
        {
            
$login_ss $_POST['login'];
            
$pass_ss $_POST['password'];
            
$login_ss htmlentities($login_ssENT_QUOTES"UTF-8");
            
$pass_ss htmlentities($pass_ssENT_QUOTES"UTF-8");
            
$pass_ss md5($pass_ss);
            
$pass_ss $db->escape_string($pass_ss);
               
$login_ss $db->escape_string($login_ss);
            
$checkquery_ss $db->query(sprintf("
            SELECT pPass, pName, pID 
            FROM Tabela
            WHERE pName = '%s' AND pPass = '%s'
            LIMIT 1
            "
,$login_ss,$pass_ss));
            
$checkstatus_ss mysqli_num_rows($checkquery_ss);
            echo 
'Status to: ' .$checkstatus_ss;
            
            
                
        }
            
    }
    else
    {
        eval(
"\$podstr = \"".$templates->get("connectws")."\";"); 
        
output_page($podstr); 
    }
}
?>
Możesz wyjaśnić to 2 zdanie lub dać jakiś przykład?
samo sql powiino byc ok, wczesniej zle spojrzalem

ten warune jest zbedny

Kod PHP:
if($ug == '1' || $ug == '7' || $sparredstatus == 1)
        {
            
error_no_permission();
            eval(
"\$podstr = \"".$templates->get("connectws")."\";"); 
            
output_page($podstr); 
            exit();
        } 

w mybb $_POST['login'] możesz zamienić na $mybb->get_input("login") analogicznie z każdym pobraniem

error_no_permission(); sama w sobie już wyświetla stronę z informacja o braka uprawień

moim zdaniem taki kod w zupelności wystarczy

Kod PHP:
<?php
define
('IN_MYBB'1); 
require 
"./global.php"
if(
$sparredstatus == 1)
{
    
header('Location: index.php');
    exit();
}

if(
$mybb->user['uid'] == 0)
{
    
error_no_permission();
}

add_breadcrumb("Integracja konta z serwerem""connectws.php");

if(
$mybb->get_input("login") && $mybb->get_input("login"))
{
    
$pass_ss md5($db->escape_string($mybb->get_input("login")));
    
$login_ss $db->escape_string($mybb->get_input("login"));
    
$checkquery_ss $db->query("
      SELECT pPass, pName, pID 
      FROM Tabela
      WHERE pName = 
{$login_ss} AND pPass = {$pass_ss}
      LIMIT 1"
);
    
$checkstatus_ss db->num_rows($checkquery_ss);
    echo 
'Status to: ' .$checkstatus_ss;        
}
else
{
    eval(
"\$podstr = \"".$templates->get("connectws")."\";"); 
    
output_page($podstr); 
    exit();