dmylogi.com

Hoe om `n SQL-inspuiting in PHP te vermy

Met hierdie wikiHow-gids sal jy leer hoe om `n SQL-inspuiting te vermy met behulp van sinne wat in PHP voorberei is. Vandag is SQL-inspuitings een van die mees algemene kwesbaarhede van webtoepassings. Gereelde stellings gebruik gekoppelde parameters en kombineer nie veranderlikes met SQL-strings nie, wat dit onmoontlik maak vir `n aanvaller om `n SQL-stelling te verander.

Die voorbereide stellings kombineer die veranderlikes met die saamgestelde SQL-stellings. Op hierdie manier word die SQL-stellings en die veranderlikes afsonderlik gestuur. Die veranderlikes word dan as eenvoudige snare geïnterpreteer en nie as deel van `n SQL-stelling nie. As die metodes van die stappe wat hieronder verduidelik word, toegepas word, is dit nie nodig om enige ander tipe SQL-inspuiting-filtertegniek te gebruik nie, soos mysql_real_escape_string ().

stappe

Deel 1
Verstaan ​​wat SQL inspuiting is

1
SQL-inspuiting is `n soort kwesbaarheid in toepassings wat `n SQL-databasis gebruik. Kwesbaarheids ontstaan ​​as `n gebruiker se insette in `n SQL-stelling gebruik word.
$ name = $ _GET [`gebruikersnaam`] - $ query = "SELECT wagwoord VAN tbl_user WAAR naam = `$ name` "-
  • 2
    Die waarde wat die gebruiker in die URL-veranderlike ingee username is toegeken aan die veranderlike $ naam. Dan word dit direk in die SQL-stelling geplaas, waardeur die gebruiker die geleentheid het om die SQL-stelling te wysig.
    $ name = "admin `OF 1 = 1 - "- $ navraag = "SELECT wagwoord VAN tbl_user WAAR naam = `$ name` "-
  • 3
    As gevolg hiervan sal die SQL-databasis die volgende SQL-stelling ontvang:
    SELECT wagwoord VAN tbl_users WAAR naam = `admin` OF 1 = 1 - `
  • Hierdie is `n geldige SQL-stelling, maar in plaas van om `n wagwoord vir die gebruiker terug te gee, gee die stelling al die wagwoorde in die tabel tbl_user. Niemand wil hê dit sal met jou gebeur in jou webtoepassing nie.
  • Deel 2
    Gebruik mySQLi om voorbereide stellings te skep

    Prent getiteld 2542820 1
    1


    Skep `n SELECT navraag met mySQLi.
    Gebruik die onderstaande kode om (SELECT) data uit `n tabel te selekteer deur gebruik te maak van `n stelling wat met mySQLi voorberei is.

    $ name = $ _GET [`gebruikersnaam`] - as ($ stmt = $ mysqli->berei voor"SELECT wagwoord VAN tbl_users WAAR naam =?")) {// Sluit aan by `n veranderlike met die parameter as string $ stmt->bind_param ("s", $ name) - // Uitvoering van die sin $ stmt->uitvoer () - / Kry die veranderlikes van die navraag $ stmt->bind_result ($ pass) - // Vind die data $ stmt->haal () - / Wys die dataprintf ("Die gebruiker se wagwoord% s is% s n", $ naam, $ slaag) - // Sluit die voorbereide stelling $ stmt->naby () -}


    • Nota: die veranderlike $ mysqli is die verbindingsvoorwerp van mySQLi.
  • Prent getiteld 2542820 2
    2
    Skep `n INSERT navraag met mySQLi. Gebruik die onderstaande kode om data (INSERT) in `n tabel in te voeg deur gebruik te maak van stellings wat met mySQLi voorberei is.

    $ name = $ _GET [`gebruikersnaam`] - $ wagwoord = $ _GET [`password`] - as ($ stmt = $ mysqli->berei voor"INSERT IN tbl_users (naam, wagwoord) WAARDES (?,?)")) {// Koppel die veranderlikes na die parameter as snare $ stmt->bind_param ("ss", $ naam, $ wagwoord) - // Doen die sin $ stmt->voer () - / Sluit die voorbereide stelling $ stmt->naby () -}


  • Nota: die veranderlike $ mysqli is die verbindingsvoorwerp van mySQLi.
  • Prent getiteld 2542820 3
    3
    Skep `n UPDATE navraag met mySQLi. Gebruik die onderstaande kode om die data (UPDATE) van `n tabel op te dateer deur gebruik te maak van stellings wat met mySQLi voorberei is.

    $ name = $ _GET [`gebruikersnaam`] - $ wagwoord = $ _GET [`password`] - as ($ stmt = $ mysqli->berei voor"UPDATE tbl_users SET wagwoord =? WAAR naam =?")) {// Koppel die veranderlikes na die parameter as snare $ stmt->bind_param ("ss", $ wagwoord, $ naam) - // Doen die sin $ stmt->voer () - / Sluit die voorbereide stelling $ stmt->naby () -}

  • Nota: die veranderlike $ mysqli is die verbindingsvoorwerp van mySQLi.
  • Beeld getiteld 2542820 4
    4
    Skep `n DELETE navraag met mySQLi. Die kode hieronder toon hoe om data uit `n tabel te verwyder (DELETE) met behulp van stellings wat met mySQLi voorberei is.

    $ name = $ _GET [`gebruikersnaam`] - $ wagwoord = $ _GET [`password`] - as ($ stmt = $ mysqli->berei voor"Vee uit tbl_users WAAR naam =?")) {// Sluit aan by `n veranderlike met die parameter as string $ stmt->bind_param ("s", $ name) - // Uitvoering van die sin $ stmt->voer () - / Sluit die voorbereide stelling $ stmt->naby () -}


  • Nota: die veranderlike $ mysqli is die verbindingsvoorwerp van mySQLi.
  • Deel op sosiale netwerke:

    Verwante
    Hoe om die Google Chrome uitbreiding instellings te veranderHoe om die Google Chrome uitbreiding instellings te verander
    Hoe om data in SPSS in te voerHoe om data in SPSS in te voer
    Hoe om `n B12 inspuiting toe te pasHoe om `n B12 inspuiting toe te pas
    Hoe om `n inspuiting van Depo Provera toe te pasHoe om `n inspuiting van Depo Provera toe te pas
    Hoe om te gaan met `n pynlike inspuitingHoe om te gaan met `n pynlike inspuiting
    Hoe om nie pyn te voel wanneer hulle jou `n inspuiting gee nieHoe om nie pyn te voel wanneer hulle jou `n inspuiting gee nie
    Hoe om `n proefskrif te skryf (hoërskoolstudente)Hoe om `n proefskrif te skryf (hoërskoolstudente)
    Hoe om `n hipotese te formuleerHoe om `n hipotese te formuleer
    Hoe om polinoom te vermenigvuldigHoe om polinoom te vermenigvuldig
    Hoe om vas te stel of twee veranderlikes direk eweredig isHoe om vas te stel of twee veranderlikes direk eweredig is
    » » Hoe om `n SQL-inspuiting in PHP te vermy
    © 2022 dmylogi.com