2016-05-15 6 views
1

Ich habe einen Kommentar von jemandem, der mir überlegen ist, dass ich einige Kommentare in zwei PHP-Schnipsel entkommen möchte, die ich unten gepostet habe. Das Problem ist, ich weiß nicht, wie ich das machen soll. Kann mir jemand helfen, indem ich die Schnipsel modifiziere?Entweichende nicht vertrauenswürdige Daten in PHP für mein WordPress Theme

Kommentar Ich habe:

Kommentar # 1:

Validate und/oder Desinfizieren nicht vertrauenswürdige Daten, bevor sie in die Datenbank eingeben. Alle nicht vertrauenswürdigen Daten sollten vor der Ausgabe maskiert werden.

Code Snippet # 1:

<?php 
if (get_header_image() && !('blank' == get_header_textcolor())) { 
     echo '<div class="site-branding header-background-image" style="background-image: url(' . get_header_image() . ')">'; 
    } else { 
     echo '<div class="site-branding">'; 
    } 
?> 

Code Snippet # 2:

<?php 
printf(
    /* translators: %1$s = text link: sangeet, URL: http://wordpress.org/themes/sangeet/, %2$s = text link: Kiran Kumar Dash, URL: https://twitter.com/TheKiranDash */ 
    __('Theme: %1$s by %2$s', 'sangeet'), 
        '<a href="http://wordpress.org/themes/sangeet/" rel="nofollow">' . esc_attr('sangeet', 'sangeet') . '</a>', 
    '<a href="https://twitter.com/TheKiranDash" rel="designer nofollow">' . esc_attr__('Kiran Kumar Dash', 'sangeet') . '</a>'); 

?> 

Kommentar # 2: esc alle get_permalink() in content.php

Code-Snippet # 3

<?php 
if (!is_single()) { 
    echo '<div class="index-box">'; 
    if (has_post_thumbnail()) { 
     echo '<div class="small-index-thumbnail clear">'; 
     echo '<a href="' . get_permalink() . '" title="' . __('Read ', 'sangeet') . get_the_title() . '" rel="bookmark">'; 
     echo the_post_thumbnail('index-thumb'); 
     echo '</a>'; 
     echo '</div>'; 
    } 
} 
?> 

Mein Ansatz:

I verwendet esc_url die get_permalink() im Code-Schnipsel esc. Soll ich esc_all benutzen? Oder esc_url ist in Ordnung.

<?php 
if (!is_single()) { 
    echo '<div class="index-box">'; 
    if (has_post_thumbnail()) { 
     echo '<div class="small-index-thumbnail clear">'; 
     echo '<a href="' . esc_url(get_permalink()) . '" title="' . __('Read ', 'sangeet') . get_the_title() . '" rel="bookmark">'; 
     echo the_post_thumbnail('index-thumb'); 
     echo '</a>'; 
     echo '</div>'; 
    } 
} 
?> 
+0

dies eher ein Wordpress Thema ist dann ein PHP ein. Sie erwähnen Desinfizierungsinformationen, bevor Sie eine Datenbank erreichen, ich sehe nichts davon. Ich kann eine sehr gute Hygienefunktion bereitstellen, aber ich bin nicht sicher, was Sie genau brauchen – iGNEOS

+0

@iGNEOS. Danke für die Antwort. Ich habe etwas saniert. Aber ich bekomme Probleme mit dem HTML. Können Sie mir helfen, während der Ausgabe Werte zu umgehen? –

+0

gut in php, es gibt "strip_tags" funktion gibt es die "htmlentities" funktion andere. Definieren Sie, was Sie mit Flucht meinen? Um XSS zu verhindern? SQL-Injektion? Was ist der Zweck hier? – iGNEOS

Antwort

1

Wie angefordert: PS. Ich habe das nicht geschrieben, sondern nur weiterentwickelt.

Verbrauch:

$user = sanctify($_GET['user']); 

Funktion:

function sanctify($data){ 
     // Fix &entity\n; 
     $data = str_replace(array('&amp;','&lt;','&gt;'), array('&amp;amp;','&amp;lt;','&amp;gt;'), $data); 
     $data = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '$1;', $data); 
     $data = preg_replace('/(&#x*[0-9A-F]+);*/iu', '$1;', $data); 
     $data = html_entity_decode($data, ENT_COMPAT, 'UTF-8'); 
     // Remove any attribute starting with "on" or xmlns 
     $data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data); 
     // Remove javascript: and vbscript: protocols 
     $data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data); 
     $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data); 
     $data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data); 
     // Only works in IE: <span style="width: expression(alert('Ping!'));"></span> 
     $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data); 
     $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data); 
     $data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data); 
     // Remove namespaced elements (we do not need them) 
     $data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data); 
     $data = str_replace('"','',str_replace("'","",$data)); 
      do{ 
      // Remove really unwanted tags 
      $old_data = $data; 
      $data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data); 
      } 
      while ($old_data !== $data); 
       // we are done... 
       return $data; 

     } 
+0

danke für die Funktion. –

+0

Wenn diese Antwort Ihnen genügt, klicken Sie bitte auf das Häkchen, um die Antwort zu markieren. – iGNEOS

Verwandte Themen