• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zabezpieczenie kodu PHP

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
2,139 wizyt
pytanie zadane 10 lipca 2015 w PHP przez migacz100 Mądrala (5,410 p.)
edycja 10 lipca 2015 przez Comandeer

Więc generalnei mam taką funkcję do połączenia się z bazą danych:

<?php
         $con = mysqli_connect("localhost", "root", "***", "technikum1") or die("Error");
             if (!mysqli_set_charset($con, "utf8")) { }
           ?>

i zastanawia mnie w jaki sposób dobrzę pisać kod tak aby miał jaknajmniej dziurl; z góry dzięki za linki.

3 odpowiedzi

+3 głosów
odpowiedź 10 lipca 2015 przez Comandeer Guru (607,060 p.)
wybrane 10 lipca 2015 przez migacz100
 
Najlepsza
Pisać tak, żeby nikt nie dostał naszych passów z bazy… zmień je, bo już wyciekły w tym pytaniu

No i obowiązuje zasad najmniejszego możliwego przywileju. Jeśli nie masz potrzeby (a na pewno nie masz potrzeby) nie korzystaj z użytkownika root - zwłaszcza z poziomu webappa
komentarz 10 lipca 2015 przez migacz100 Mądrala (5,410 p.)
Baza tylko lokalna więc oto się nie martwię, ale zbieram wiadomości na przyszłość, dziękuję.
–1 głos
odpowiedź 10 lipca 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
edycja 10 lipca 2015 przez Mateusz Analityk

function filtruj($zmienna) {
    if (get_magic_quotes_gpc())
        $zmienna = stripslashes($zmienna); // usuwamy slashe

        
// usuwamy spacje, tagi html oraz niebezpieczne znaki
    return mysql_real_escape_string(htmlspecialchars(trim($zmienna)));
}

masz funkcję musisz teraz ją tylko wywołać w odowiednim miejscu ona ci wszystko pzefiltrujee. Najlepiej jest to zrobić w ifie. Jeśli przefiltrowana zmienna będzie taka sama czyli będzie się równała wartości przesłanej metodą post w tedy kod powinien się wykonać natomiast w przeciwnym wypadku powinno być inaczej.

 

if ($mysqli->connect_error != 0) {
        echo "Error:" . $mysqli->connect_errno;
    } else {

        $dodaj_element = filtruj($_POST['dodaj_element']);

        if ($_POST['dodaj_element'] == $dodaj_element) {
            $sql = "INSERT INTO `lista` (`element`) VALUES ('$dodaj_element')";
            $mysqli->query($sql);
            echo "$dodaj_element";
            echo "<div align=\"center\"><strong>Element został dodany poprawnie</strong></div>";
            $mysqli->close();
                echo '<p><a href="./">Wyślij nowy element</a></p>';
        } else {
            echo "<div align=\"center\">Zostały wprowadzone nieprawidłowe znaki. Element <b> nie </b> został wysłany.</div>";
            echo '<p></br><a href="./">Od nowa</a></p>';
        }
    }

Przepuści ci w tym wypadku tylko znaki typu int lub string. Jeśli zmienna nie będzie int lub string w tedy wyświetli się komunikat.

Dne do połączenia inkludujesz z oddzielnego pliku:

  include_once "connect.php";

w moim przypadku zmienna $con = $mysqli

komentarz 10 lipca 2015 przez efiku Szeryf (75,160 p.)
Słyszałeś kiedyś o PDO i bindowaniu parametrów/wartości?
komentarz 10 lipca 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Niestety nie oświeć mnie
komentarz 10 lipca 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)

PHP Data Objects

PHP Data Objects – rozszerzenie języka PHP udostępniające jednolity interfejs baz danych w postaci pojedynczej klasy z metodami wspólnymi dla różnych silników zarządzania bazą danych. Eliminuje to konieczność korzystania przez twórców oprogramowania z własnych lub zewnętrznych rozwiązań unifikujących sposób operow…

komentarz 10 lipca 2015 przez efiku Szeryf (75,160 p.)
Proszę, https://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO to się stosuję "dziś" i bardziej wygoniej pracuje się z tym, niż z mysqli :-)
komentarz 10 lipca 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Bym cię lajkną ale nie mogę
komentarz 10 lipca 2015 przez efiku Szeryf (75,160 p.)
Spoko, nie dla lajków tu jestem! :D
To co, przechodzisz na jasną stronę mocy z biblioteką PDO? :D

Pozdrawiam!
komentarz 10 lipca 2015 przez Mateusz Analityk Stary wyjadacz (13,710 p.)
Muszę poświęcić cały dzień by przeanalizować wszystkie kody zamieszczone na tej stronie i nasępny żeby sam napisać własn projekt w oparci o bibliotekę PDP na razie dla mnie to czarna magia. Dużo funkcji jeszcze nie znam i muszę zobaczyć jakie funkcj one wykonują. Jak czytałem stare komentarze to ludzie mnie zachęcali do kożystania z mysqli a o PDO nigdy nie słyszałem ale więlkie dzięki za podsunięcie mi takiego rozwiązania. Po to tu jestem żeby się uczyć. :)
komentarz 10 lipca 2015 przez Boshi VIP (100,240 p.)
Ciekawe kto pisał te komentarze... Pdo ma zalwdwie kilka  funkcji 3 h i ogarnięte.
–3 głosów
odpowiedź 10 lipca 2015 przez vapvap Początkujący (350 p.)

Więc generalnie na spokojnie naucz sie pisać w języku polskim nie piszemy: generalnei :)

Drugą sprawą jest jak najmniej dziur, a nie jaknajmniej dziurl :)

Powinieneś zadać pytanie:

Jak zabezpieczyć się przed SQL injection w php.

Odpowiedzi jest wiele np.: StackOverflow

http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php

komentarz 10 lipca 2015 przez Boshi VIP (100,240 p.)
Tylko i wyłącznie przez SQL?

Podobne pytania

+1 głos
2 odpowiedzi 1,387 wizyt
pytanie zadane 28 czerwca 2015 w HTML i CSS przez niezalogowany
0 głosów
1 odpowiedź 1,016 wizyt
pytanie zadane 27 lipca 2015 w PHP przez migacz100 Mądrala (5,410 p.)
0 głosów
2 odpowiedzi 343 wizyt
pytanie zadane 6 maja 2015 w PHP przez CzlowiekSkrypt Nałogowiec (26,340 p.)

93,434 zapytań

142,429 odpowiedzi

322,661 komentarzy

62,797 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...