php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.08.2009, 09:57  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard seltsames Problem mit strip_tags und zugelassenen HTML Tags

Hallo Leute,

mir ist das zwar schon fast peinlich das zu fragen, aber ich bin momentan echt überfragt.

Ich schütze mein Forum ja auch gegen XSS Attacken und verwende dazu auch strip_tags, nun habe ich im Manual auch gelesen das man auch HTML Tags ausschliesen kann die zugelassen werden sollen.

So sieht mein Code aus

PHP-Code:
if(isset($_POST['edit_post']))
{
 
//variablen zuweisen und typisieren
 
$text = (string)$_POST['text'];
 
//prüfen magic quotes on
 
if(get_magic_quotes_gpc() && get_magic_quotes_runtime())
 {
  
$text stripslashes($text);
 }
 
//variable abschliesend prüfen und sichern
 
$text trim(strip_tags($text,'<p>,<img>,<div>,</div>'));
 
//geänderten post eintragen
 
$sqlbefehl ="
    Update
     posts
    Set
     post_text ='"
.mysql_real_escape_string($text)."'
    Where
     id_post ="
.(int)$_POST['id_post']."
    "
;
 
$res_edit_post mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);

Wie ihr seht sind da nun einige HTML Tags zugelassen, aber es wird trotzdem der Code dann zerschossen.

Und hier könnte ihr das Beispiel dazu sehen Lit-Web - Forum - Großes Artikelbild

Beim ausgeben habe ich auch mal das htmlspecialchars raus genommen um zu sehen ob es daran liegt, aber nein tut es nicht.

Könnt ihr mir da weiterhelfen was da falsch läuft? Vielen dank und beste Grüße litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.08.2009, 10:00  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

hm also schliessende tags brauchst Du nicht angeben
HPR1974 ist offline  
Alt 07.08.2009, 10:05  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Stimmt die dürfen nicht durch Komma getrennt werden, das habe ich behoben und den schliesenden Tag auch raus genommen.

Mein Code schaut nun so aus.

PHP-Code:
if(isset($_POST['edit_post']))
{
 
//variablen zuweisen und typisieren
 
$text = (string)$_POST['text'];
 
//prüfen magic quotes on
 
if(get_magic_quotes_gpc() && get_magic_quotes_runtime())
 {
  
$text stripslashes($text);
 }
 
//variable abschliesend prüfen und sichern
 
$text trim(strip_tags($text,'<p><img><div>'));
 
//geänderten post eintragen
 
$sqlbefehl ="
    Update
     posts
    Set
     post_text ='"
.mysql_real_escape_string($text)."'
    Where
     id_post ="
.(int)$_POST['id_post']."
    "
;
 
$res_edit_post mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);

Trotzdem aber zerschiest er mir alles Lit-Web - Forum - Großes Artikelbild
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 07.08.2009, 10:12  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

lass Dir doch mal nach dieser zeile:
$text = trim(strip_tags($text,'<p><img><div>'));
mit highlight_string $text ausgeben
HPR1974 ist offline  
Alt 07.08.2009, 10:18  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Da wird ga nichts ausgegeben an der Stelle auser [ PHP ][ /PHP ] natürlich ohne Leerzeichen in dern eckigen Klammern.

Also an der Stelle nun fehlt der komplette Strin wenn <?php ?> mit eingebunden ist.

Und wenn ich die <?php ?> weg lassen dann gibt er mir das so aus an der Stelle.

HTML-Code:
[ PHP ] 
 
 
$sqlbefehl =" 
Select 
id_bild, 
art_id, 
bild 
From 
".$prefix."artikel_bilder 
Where 
art_id =".intval($artikel['id_artikel'])." 
Order By 
id_bild ASC 
"; 
$erg_bilder = mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl); 
while($zb = mysql_fetch_assoc($erg_bilder)){ 
 
$pic = $zb['bild']; 
$src="artikel_bilder/".$pic.""; 
 
echo '<div align="center">'; 
echo ' 1
Das heist der schneidet auf einmal ab.

Nach dem Abschnitt des echos müsste der Code dann mit einen <img> Tag weiter gehen und einem echo mit schliesenden </div>
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de

Geändert von litterauspirna (07.08.2009 um 10:22 Uhr).
litterauspirna ist offline  
Alt 07.08.2009, 10:24  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

nene Du sollst mal $text nach der mainpulation ausgeben lassen...
HPR1974 ist offline  
Alt 07.08.2009, 10:26  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von HPR1974 Beitrag anzeigen
nene Du sollst mal $text nach der mainpulation ausgeben lassen...

Habe ich doch gemacht, genau beim absenden, also in der refresh weiterleitung. Also schon so wie du sagtest. Das habe ich nicht bei der Textausgebe gemacht sondern da wo es in die Datenbank geschrieben wird.

PHP-Code:
if(isset($_POST['edit_post']))
{
 echo 
'<span class="error_board_text">';
 echo 
'Dein Beitrag wurde hinzugefügt! Falls Ihr Browser sie nicht authomatisch weiterleitet
 <br /> 
 <a href="'
.$path.'/index.php?site=light-board&amp;page=show_thread&amp;thema='.QuoteString($_POST['thema']).'&amp;id_thema='.(int)$_POST['id_thema'].'">dann klicken sie bitt hier</a>!';
 
 
 echo 
highlight_string($text);
 
 
 echo 
'</span>';
  
 echo 
'<meta http-equiv="refresh" content="30;
  url='
.$path.'/index.php?site=light-board&amp;page=show_thread&amp;thema='.QuoteString($_POST['thema']).'&amp;id_thema='.(int)$_POST['id_thema'].'">';

Das ist dann in der eingebunden post_edit.php die in der show_thread.php singebunden ist, an der Stelle wo der Beitrag editiert werden soll.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 07.08.2009, 10:34  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.847
HPR1974 wird schon bald berühmt werden
Standard

wie auch immer Deine Dateienstruktur ist:
if(isset($_POST['edit_post']))
{
//variablen zuweisen und typisieren
$text = (string)$_POST['text'];
//prüfen magic quotes on
if(get_magic_quotes_gpc() && get_magic_quotes_runtime())
{
$text = stripslashes($text);
}
//variable abschliesend prüfen und sichern
$text = trim(strip_tags($text,'<p><img><div>'));
--> highlight_string($text); exit;
...
HPR1974 ist offline  
Alt 07.08.2009, 10:51  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Es bleibt nachwievor das gleiche Proble. Momentan muss ich wohl erst mal damit leben, obwohl ich das eben überhaupt nicht verstehe weil das syntaktisch richtig ist.

Da ich meine Seite eh von Grundauf neu programmiere und Designe, kommt da ein neues Forum rein, was ausgebauter ist.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 07.08.2009, 14:29  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Tag Litter,

ich hab vorhin in meinem Buch ein Kapitel über XSS gelesen und gerade ein bisschen rumgespielt:

PHP-Code:
<?php
error_reporting
(E_ALL);

if (
$_POST) {
  if (isset(
$_POST["name"])) {
    if (
get_magic_quotes_gpc()) {
      
$_POST["name"] = stripslashes($_POST["name"]);
    }
    
$string  trim(nl2br(htmlentities($_POST["name"])));

    
$search  = array();
    
$replace = array();

    
$reg_exp '#\[code\](.*?)\[/code\]#si';
    
preg_match_all($reg_exp$string$matchesPREG_SET_ORDER);

    
$highlight_search  = array('<br />''&gt;''&lt;''&quot;');
    
$highlight_replace = array('''>''<''"');
    foreach (
$matches as $match) {
      
$code highlight_string(str_replace($highlight_search$highlight_replace$match[1]), 1);

      
$search[]  = $match[0];
      
$replace[] = '<div class="codebox">' $code '</div>';
    }

    
$search[]  = '&amp;';
    
$replace[] = '&';
  
    
$string str_replace($search$replace$string);
  }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head>
<title>XSS - Cross-Site Scripting</title>

<style type="text/css">
.codebox {
  background-color: #f8f8f8;
  border: #aaa 1px dotted;
  padding: 10px;
}
</style>

</head>
<body>

<?php
if (isset($string)) {
  echo 
$string;
}
?>

<h1>XSS - Cross-Site Scripting :: Test</h1>

<form method="post" action="">
<textarea name="name" rows="8" cols="80">
<?php echo isset($_POST["name"]) ? $_POST["name"] : ''?>
</textarea> 
<input type="submit" />
</form>

</body>
</html>
XSS - Cross-Site Scripting

Teste z.B. mit:
Code:
01234567890123456789012345678901234567890123456789012345678901234567890123456789

[code]<?php
echo 'bla';

echo 'äÖÜ rtgdfhv`ß ßÄÖÜÜ ';

?>

<img src="foo/bar.png" alt="" />

'
[/code]

<script>content=/Hallo Welt/;alert(content.source);</script>
Mich ärgert an dem Code nur, dass highlight_string ebenfalls wie htmlentities das & mit &amp; ersetzt und ich dies aufgrund der Ersetzung bei z.B.
Code:
&auml; => &amp;auml;
zum Schluss wieder rückgängig machen muss.
Asipak ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Html Tags in textarea nofear87 JavaScript, Ajax und mehr 6 02.11.2008 00:21
[Erledigt] RegEx: beliebige HTML Tags in String ersetzen Der Blaue Gott Balmung PHP Tipps 2008 8 13.09.2008 18:01
Posix Regex: Problem beim HTML Tags suchen PHP Tipps 2005 2 13.09.2008 17:57
[Erledigt] Seltsames Problem mit Smarty PHP-Fortgeschrittene 3 28.07.2005 00:42
seltsames php und session problem netti PHP-Fortgeschrittene 16 01.06.2005 17:01
Erkennung von HTML Tags McLain PHP-Fortgeschrittene 4 26.04.2005 10:03
Problem: PHP + HTML PHP Tipps 2005 8 30.01.2005 19:55
[Erledigt] Frage: Text abschneiden aber auf html tags achten PHP-Fortgeschrittene 1 19.01.2005 20:46
Problem mit HTML HTML, Usability und Barrierefreiheit 1 15.12.2004 23:11
seltsames problem PHP Tipps 2004-2 5 29.11.2004 20:52
Problem mit htm bzw. html Dateien Server, Hosting und Workstations 7 15.10.2004 20:27
[Erledigt] imap_qprint ohne (HTML Tags) PHP-Fortgeschrittene 0 29.09.2004 14:09
Problem mit HTML im Gästebuch juhuwoorps PHP Tipps 2004 8 06.09.2004 19:10
[Erledigt] Probleme mit html tags! PHP Tipps 2004 5 28.07.2004 23:37
[Erledigt] Seltsames Problem mit Übergabe PHP Tipps 2004 1 30.06.2004 13:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
strip_tags funktioniert nicht, strip_tags, php strip_tags, trim(strip_tags, php strip_tags probleme, strip_tags problem, $text = strip_tags($_post[\'text\'], highlight_string rückgängig machen, strip_tags img, php strip_tags funktioniert nicht, trim(strip_tags), strip_tags php, strip_tags span, mysql_real_escape_string stripslashes htmlspecialchars, strip_tags(stripslashes($_post[\'beschreibung\'])));, strip_tags <a> problem, php strip_tags abschneiden tag, $sql_befehl=stripslashes($_post[\select * from \], php strip_tags style, strip_tags mit echo ersetzen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:44 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum