Databank: veiligheid op de eerste plaats

gewoonte, aangepaste database: veiligheid,,,,,,,,,, uitwisseling van aandelen, 11,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' dit artikel niet missen, is een reeks voor de gewoonte in de database zegt dat een deel van de databank. Aanpassen: het creëren van tablecustom database: het creëren van een API - en dit is het tweede deel van de serie aangepaste wordpress database.In het eerste deel, dat we de oorzaken van die, en tegen het gebruik van tabellen, maat.We kijken naar een rekening moeten worden gehouden met details... In de nomenclatuur, opgenomen soorten, en het creëren van tafel.Voor we verder gaan, moeten we bespreken hoe we met deze nieuwe vorm van interactie, veiligheid,.In het voorafgaande artikel onder de algemene ontsmetting en verificatie - in deze handleiding, we zullen zien in de context van deze meer gedetailleerde gegevensbank.,,, de veiligheid en de database is van cruciaal belang is dat we - - waarom voor het reeds in de reeks.Als het niet het juiste te doen, en dan kun je je horloge moet door middel van SQL manipuleren.Het kan toestaan dat de Hacker ter vervanging van de inhoud van de informatie, kan je veranderen, zelfs op de website van de handeling en de schade te beperken, kunnen ze je niet de gewoonte, laten we aannemen dat we hopen dat de beheerder toestaan het schrappen van gegevens, van onze activiteiten log.Een vaak voorkomende fout, ik zie is de volgende: als (!Lege (dollar _get [het]) & & het schrappen van de activiteiten van _get [het] = = $& & is ($_get ['log_id])) (Global $wpdb; unsafe_delete_log ($_get ['log_id "]);} functie unsafe_delete_log ($log_id) (Global $wpdb; $SQL =" geschrapt wptuts_activity_log} {$wpdb - >, log_id = $log_id "geschrapt; = $wpdb - > vraag ($SQL);}, wat is hier aan de hand?Ze heeft geen vergunningen te controleren, dus iedereen kan het schrappen van de activiteiten log.Ze is niet de willekeurige controles, dus zelfs als de inspectie - instantie kan de gebruiker misleiden, de beheerder van het schrappen van de log.Dit is de les van allemaal.Maar ze hebben een derde fout: de eerste klasse, unsafe_delete_log (), het gebruik van de waarde van het verleden in de functie van een SQL 'zal niet ontsnappen aan het eerste.Dit laat het open te manipuleren, laten we aannemen dat het doel is, www.unsafe-site.com?Action = het schrappen van de activiteiten van log_id = 7 & als een aanvaller toegang (of bedrog beheerder):, www.unsafe-site.com?Het schrappen van de activiteiten van de actie = & log_id = 1%%%; 20wp_posts 20drop 20table,.En log_id, met inbegrip van SQL ', en vervolgens in de dollar zal de uitvoering van de verklaring, en van daar, wp_wptuts_activity_log:log_id = 1 geschrapt; de tabel geschrapt. Wp_posts, de resultaten van de hele, wp_posts, tabel geschrapt.Ik zag het op het forum van de code, het resultaat is van een bezoek aan de website, de mensen kunnen in de database van vernieuwing of het schrappen van gegevens, als de eerste fout wordt gecorrigeerd, dan zal het echt op een dergelijke aanval meer hard werken, maar het is niet onmogelijk, het schrappen van de activiteiten van de autoriteit niet het logboek van de aanvallen te beschermen.Het beschermt je tegen de website van SQL injectie is heel belangrijk.Het is heel eenvoudig: de voorbereiding, die, voor je.In dit specifieke geval, functie: safe_delete_log ($log_id) (Global $wpdb; $SQL = $wpdb - > voorbereiding ("geschrapt wptuts_activity_log} {$wpdb - >, log_id = d", log_id dollar); $geschrapt = $wpdb - > ($SQL)), om de uitvoering van SQL van wp_wptuts_activity_log waar log_id = 1 geschrapt;,, de database van de ontsmetting, ontsmetting kan alleen worden gebruikt, $wpdb, met name door middel van de mondiale –, de voorbereiding, de methode.Het is ook opgenomen in de actualisering van de gegevens in de tabel en de veiligheid daarvan.Deze werken meestal door de vervanging van de inbreng van een onbekende, of zal de vervanging van de input en de vorm.Deze vorm van de gegevens uit: wat is zeg je,%, dat een string, D, dat is een getal,% f, dat een drijven, en we kijken naar de drie methoden voor de vraag - maar niet alleen om ze ook voor jou., de volgende gegevens, die voorziet in een methode voor de $wpdb wordpress, - > wordt ().Dit is een gegevens in de database van de verpakking en de ontsmetting.Het duurt drie parameters:,, tabel, - namen, gegevens, - - gegevens zijn opgenomen in de kolom - > waarde van de,, het formaat, de overeenkomstige waarden in de vorm van gegevens) - - - (bijvoorbeeld%%%,,,,,,, dat de sleutel van de gegevens) moeten worden opgenomen: als er is een sleutel van de kolom komt niet overeen met een fout kan worden gegooid, en in de volgende voorbeelden hebben wij uitdrukkelijk voorzien van gegevens - maar natuurlijk, in het algemeen, en deze gegevens zijn afkomstig uit de inbreng van gebruikers, dus het is niets.In dit artikel worden de gegevens zijn geverifieerd en de terugkeer van alle fouten van de gebruiker - maar we moeten nog steeds de gegevens toe te voegen aan onze tafel.We zullen in de volgende artikelen van de verificatie, $wpdb; /user_id dollar = 1 USD = 1 USD; activiteiten; object_id = 1.479; dollar activity_date = date_i18n ('y-m-d H: me: ", niet echt); $ingevoegd = $wpdb - > ingevoegd ($wpdb - > wptuts_activity_log, (") user_id "= > user_id dollar," activiteit "= > $activiteiten" object_id "= > object_id dollar" activity_date "= > activity_date dollar), - (de" D ","% "," D ","%)); als ($ingevoegd) {% insert_id = $wpdb - > insert_id} {///////; anders wordt niet}, de bijwerking van de gegevens in de database, ons in de bijwerking van de gegevens, $wpdb - > actualisering ().Deze methode heeft vijf parameters:,, de naam, de naam van de lijst van gegevens – en, - reeks gegevens voor de vernieuwing van de waarde van de post >,,, - reeks gegevens die opgenomen > waarde van de,, het formaat van de gegevens, in de vorm van de desbetreffende gegevens - - - - - in de vorm van de waarde, van het model voor de overeenkomstige "waar" waarden, een update, die overeenkomen met het in de reeks van gegevens).Nogmaals, met, $wpdb - > wordt (), de sleutels van de gegevens) moeten overeenkomen met de lijst.Het weer, fout, fout, of de vernieuwing van de rijen in de volgende voorbeelden, we werken met een record van 14 (logo moet is het een record, want dat is onze primaire).Bijwerking van gebruikers - id 2 en de activiteiten van de $wpdb "bewerken", user_id dollar. $2 = = = = = = ='edited; de activiteit; log_id dollar = 14; de dollar is bijgewerkt = $wpdb - > vernieuwing ($wpdb - > wptuts_activity_log array ("user_id" = > dollar user_id "activiteit" = > en activiteiten), - ('log_id "= > log_id dollar), - (de" D ","%), - (de "D"), als ($); bijwerking) {///////rijen update = $bijgewerkt), te schrappen, omdat de 3.4 wordpress biedt ook, $wpdb - * het schrappen van ('), 方法容; gemakkelijk (veiligheid) het schrappen van de lijn (s).Deze methode moet drie parameters:,, - de naam, de naam van de tabel, waarin opgenomen gegevens, - - die > waarde van de,, het formaat, de overeenkomstige waarden voor de vorm - - soorten (bijvoorbeeld% d,,,,,,%), als je wilt dat je code In je pre-3.4 verenigbaar zijn, dan zal je moeten gebruiken, $wpdb - > voor de ontsmetting van de verklaringen, passende methode.Het geeft een voorbeeld van.En $wpdb - > geschrapt, de methode is het aantal rijen schrapping, of - - dus je kan zorgen dat het succes van de $wpdb; als geschrapt, geschrapt = $wpdb - > geschrapt ($wpdb - > wptuts_activity_log, - ('log_id "= > 14), netwerken (" d "), als (); $geschrapt) {///////de rijen schrappen =%}, esc_sql, op de bovengenoemde methoden van licht, en meer in het algemeen, $wpdb - > voorbereiden (), over de methode, de functie van een beetje overbodig.Het biedt een nuttige verpakking, $wpdb - > ontsnappen (). De methode zelf is een eer, addslashes,.Want het is meestal meer geschikte, Wise, het gebruik van deze drie methoden, of, $wpdb - > voorbereiden (), dat zal je ontdekken dat je zelden gebruik nodig is, esc_sql (), en als een eenvoudig voorbeeld:, "opmerkingen" activiteiten = dollar. $SQL = {$wpdb "geschrapt. - > wptuts_activity_log} =" activiteiten ". Esc_sql ($)."; "; de algemene vraag, in het algemeen, de SQL (d.w.z. niet wordt geschrapt, of moeten we gebruik maken van nieuwe), $wpdb - > voorbereiden ().Het aanvaarden van een variabele parameters.De eerste is de uitvoering van alle onbekende moeten we de gegevens in een passend formaat SQL vervanging vervanging.Deze waarde als een extra argument, in de volgorde van hun optreden, zoals SQL, in plaats van de dollar = "select * van {$wpdb - > wptuts_activity_log}, user_id = user_id dollar en object_id = object_id dollar en de activiteiten van de volgorde van de werkzaamheden die door de activity_date = dollar dollar dollar log = orde"; wpdb - > get_results ($)); en wij hebben $SQL = $wpdb - > voorbereiding ("select * van {$wpdb - > wptuts_activity_log}, user_id = d en D en de activiteiten van object_id = =% voor activity_date%", user_id dollar. $object_id, De volgorde van de werkzaamheden); $log = $wpdb - > get_results ($SQL);,, voorbereiding, doe twee dingen, die van toepassing is op de mysql_real_.Escape_string (), (of, addslashes (), de waarde worden opgenomen).In het bijzonder, dit om te voorkomen dat de waarde van de verwijzing, met inbegrip van de vraag uit de citaten.Het is van toepassing op, vsprintf (), wanneer de waarde toevoegen aan de vraag om ervoor te zorgen dat ze correct formaat (dus de gehele getallen, drijvend, enz.).Dit is de reden waarom wij in het begin van de afgestoten, naast de "1" voorbeeld.,, van meer complexe vraag, vind je $wpdb - > klaar, met de opneming van de methode, de vernieuwing en het schrappen van is wat je echt nodig hebt.Soms, hoewel er nog meer "handleiding" - methode is een ideale situatie, soms alleen vanuit het oogpunt van de leesbaarheid.Bijvoorbeeld, stel dat we een onbekende activiteiten - en wij hopen dat alle logboeken.We kunnen zich nog,% reserve vraag, maar een meer directe aanpak leek me makkelijker:, /onbekende -, moet bevatten. Zijn vraag $= - activiteiten (...)- de inhoud van de activiteiten; ///////array_map dollar (USD'esc_sql "); de activiteiten array_map ('sanitize_title_for_query dollar /het creëren van activiteiten); - de interne vorming van schoon. (...)Verklaring in_sql dollar = ".Crash ("" ",,, - activiteiten)."Toevoegen aan de vraag; ///////SQL dollar = "select * van $wpdb - > wptuts_activity_log activiteiten (in in_sql} {%); ///////uitvoering van de vraag van de $wpdb = dollar - > get_results ($)); het idee is, moet gelden esc_sql,,, sanitize_title_for_query, voor elk element in de reeks.In de eerste plaats een clausule toegevoegd – vergelijkbaar met wat, $wpdb - > voorbereiden (), nee.De tweede is van toepassing sanitize_title_with_dashes (), - - hoewel gedrag kan worden door het filter volledig gewijzigd.Het is nu schoon... SQL - voor een gescheiden door een komma 's string, waarin de toetreding in (...), onderdeel van de vraag, als de generator bevat een geheel getal is genoeg, intval () (), of, absint voor elk element in de reeks, in de witte lijst, onder andere omstandigheden, een witte lijst kunnen nodig zijn.Bijvoorbeeld, de inbreng van onbekende is terug in een vraag kan in de kolommen van de generator.Omdat we weten dat de lijst van de database kan alleen een witte ze – op het gebied van verwijdering, wij niet erkennen.Echter, om ons de code van de mensheid, moeten we niet zo gevoelig.Om dit te bereiken, zullen we een kleine - omschakeling die we hebben ontvangen omdat het in het eerste deel van ons speciaal met kleine kolom benaming ///////., een onbekende), bevat de in de vraag van $gebied =) (...)Op het gebied van de witte lijst toegestaan; ///////allowed_fields dollar = - (...); ///////omgezet in een kleine (zoals de kolommen veld naam lager naar $1 ('strtolower = array_map) gebied, als op het gebied van de ontsmetting); ///////array_intersect dollar op het gebied van de witte lijst = (dollar gebied, allowed_fields); ///////terug naar Wenen.Op het gebied van $leeg worden uitgelegd als (lege (gebied)) {% SQL = "select * van {$wpdb - > wptuts_activity_log}} {% SQL =; mensen die" keuze ". (", ", de ineenstorting van het veld)." ($wpdb - > wptuts_activity_log}} uitvoering; ///////de vraag van de = dollar $wpdb - > get_results ($)); en een witte lijst is ook handig is, om als onderdeel van de vraag (indien dit door de inbreng van gebruikers): gegevens kunnen sorteren, in afnemende volgorde van het wac, of,,., /onbekende gebruiker (WAC of hem be), - = _get dollar [is]; ///////de invoer mogelijk te maken van alle, of gemengd, gevallen van = strtoupper (dollar voor dollar); ///////ontsmetting van de waarde voor de dollar ("wac = = = $orde?"ASC:'Dec'.); onderzoek, steun, zoals SQL wildcard, zoals% (nul of meer letters), _ (slechts één karakter) als de waarde van de vraag was.Bijvoorbeeld, z 'n, zal bij iedere vraag:, select * van $wpdb - > wptuts_activity_log activiteiten, zoals "foo%" select * van $wpdb - > wptuts_activity_log activiteiten, zoals artikel van een select * "% $wpdb - > wptuts_activity_log activiteiten, zoals"% OBA% "select * van $wpdb - > wptuts_activity_log activiteiten als' fo_bar%", maar deze speciale tekens kunnen bestaan op de lange termijn gezocht – om te voorkomen dat ze worden beschouwd als wild - - we moeten ze kwijt.Dit is like_escape wordpress, (), functioneren.Dit betekent niet dat de door de escapes SQL (– maar alleen de, in%, en, _, je nog steeds nodig characters: gebruik te esc_sql (), of, $wpdb-> voorbereiden (), die //Collect., $term = $_GET['activity']; //Escape een wildcards $term = like_escape ($term); de $SQL = $wpdb-> voorbereiden ("; SELECT* van $wpdb-> wptuts_activity_log waar de activiteit als%",'%'.$term.'%'); $logs = $wpdb-> get_results ($SQL); de vraag van verpakking, functies, in de bijeenkomst die we 've het we' ve gebruikt twee andere methoden van $wpdb:,,,, $wpdb-> vraag ($SQL), - dit heeft gegeven aan een vraag. En de terugkeer van het nummer van die rows.,, $wpdb-> get_results ($SQL, $ouput), - dit heeft de vraag gegeven aan het resultaat van de bijpassende set en rendement (d.w.z. de matLozen).De output, de resultaten terug van de dollar, die de vorm van array_a:,,, - - waarde, die elk een regel is een associatieve), obligaties, array_n.,, - - waarde, die elk een regel is een numerieke reeks.,, het voorwerp, de Bank - met een numerieke reeks. Elke lijn is een object.Bij verstek, object_k, - verenigingen) (de input van de in de eerste kolom van de waarde), die elk een regel is een associatieve).,,, en hebben we niet gezegd:,, $wpdb - > get_row ($SQL, de produktie van de dollar, die de uitvoering van het onderzoek - -) en weer een rij.Het gedrag van de standaard, terug, 0, de eerste rij.Productie van de US - dollar, de lijn is, array_a formaat:,,, - - rij, rij = > de waarde van de array_n,.,,, - lijn van de waarde van de numerieke reeks.,, het voorwerp, de – rij terug als een voorwerp.Bij verstek,,, $wpdb - > get_col ($SQL, $), - - dat de uitvoering van de in de vraag en de terugkeer van een numerieke reeks.Lijst van aangewezen, die, om terug te keren naar de rijen met getallen.Bij verstek, dit is 0, eerste rij.,, $wpdb - > get_var ($), geregeld –), dat uitvoering van de vraag en de terugkeer van een bijzondere waarde.En $, en $opgenomen, zoals hierboven vermeld, is de waarde en worden terug te keren.Bijvoorbeeld, activities_by_user_1 dollar = $wpdb - > get_var ("kies Count (*) van {$wpdb - > wptuts_activity_log}, user_id = 1"); dat deze methoden, verpakking, en alleen de uitvoering van de resultaten van de vraag en het is heel belangrijk.Vraag ze niet, dus je moet niet - gebruik maken van hun eigen vraag bevat een aantal gegevens, een onbekende.,, we hebben dekking van veel van deze handleiding en ontsmetting van het begrip van de gegevens is een belangrijk onderwerp.In het volgende artikel, we zullen toepassen op de plug.We zullen de ontwikkeling van een functie van verpakking (soortgelijke functies, wp_insert_post () (), en wp_delete_post, enz.), zal een extra laag - en tussen onze database, abstract.



Previous:
Next Page: