Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz
  • 0

Jak to jest z tym SQLInjection?


AlexsanderARG

Pytanie

Opublikowano

Witam,

 

Aktualnie piszę panel pod grę online. Stąd też moje pytanie, jak jest z tym SQLInjection i jak się przed nim bronić? Na razie panel jest na localhoscie, ale kiedyś trzeba wyjść z niego i stronę upublicznić. W panelu mam logowanie / dodawanie newsów, jak je zabezpieczyć najlepiej Waszym zdaniem?

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

Opublikowano

Wszystkie zapytania bindować przy pomocy bindParam przykład: 

$database = new PDO('mysql:host=localhost;dbname=test', 'root', '');

$query = $database->prepare("INSERT INTO costam (costam, costam2) VALUES(:wartosc1, :wartosc2)");
$query->bindParam(":wartosc1", $_POST['costam']);
$query->bindParam(":wartosc2", $_POST['costam2']);
$query->execute();

 

Opublikowano
59 minut temu, AlexsanderARG napisał:

@Lujekk

 

A co w przypadku gdy używam Mysqli? PDO z nie wiadomych przyczyn nie chce mi działać 

W mysqli też jest bind_param w necie znajdziesz przykładowe skrypty z zastosowaniem bind_param. Ale PDO nie działa ci? O.O

$db = new mysqli("localhost", "root", "", "dbname");

if ($db->connect_error) {
    die("Connection failed: " . $db->connect_error);
}

// prepare and bind
$stmt = $db->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

$firstname = "John";
$lastname = "Doe";
$email = "[email protected]";
$stmt->execute();

 

Opublikowano

Zacznijmy od tego że w MySQLi ciężko zrobić atak ponieważ można wysłać tylko jedno zarządzanie do bazy na raz w jednym połączeniu, więc nie doda sobie kolejnego żądania (osoba atakująca), możesz też zastosować regex, prócz tego nie wiem jaki jest twój poziom w PHP ale możesz się zastanowić nad Doctrine, ORM to podstawa.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...