• 26-07-2006, 03:29:57
    #1
    Arkadaşlar merhaba siteme shout box kurdum ama html kodlarını yediğini farkettim
    buda bildiğiniz gibi büyük tehlike arz ediyor. Bunu nasıl kapatabilirim ??? bu açığı bi kaç kişi;

    htmlspecialchars ile değişkeni filtrelersen dedi ama bu nasıl yapılır bide include varmış nasıl yapıcam yardım edebilcek biri varmı?
  • 26-07-2006, 03:39:20
    #2
    hazır bi kod mu bu? yani htmlspecialchars ile yapılır fakat post ile gelen veri nerde işleniyo onu bulman gerekiyo,
    $_POST arat kod içinde,
    eğer post la gelen veri başka bi değişkene atandıysa örnek olarak
    $a=$_POST['falanfilan'];
    o kısmı;
    $a=htmlspecialchars($_POST['falanfilan']);
    yapman yeterli olacaktır,

    muhtemeken bu sınıf-nesne içinde olur, kod u yollama gibi bi imkanın olursa yardımcı olmaya çalışrm..
  • 26-07-2006, 03:40:04
    #3
    <?
    require("../SSI.php");
    
    if (!defined('SMF'))
    	die('Hacking attempt...');
    
    // global variables
    global $db_connection, $context, $settings, $txt, $user_info, $modSettings, $db_prefix;
    
    // used in test scenario
    //@mysql_select_db($db_name, $db_connection);
    
    //display html header
    echo '<html xmlns="http://www.w3.org/1999/xhtml"', $context['right_to_left'] ? ' dir="rtl"' : '', '>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />
    	<meta name="description" content="Shoutbox" />
    	<meta name="keywords" content="Shoutbox" />
    	<title>Shoutbox</title>
    	<meta http-equiv="refresh" content="'.$modSettings['sbox_RefreshTime'].';URL=sboxDB.php">
    	<link rel="stylesheet" type="text/css" href="', $settings['theme_url'], '/style.css?rc2" />
    	<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
    		function killYesNo()
    		{
    			return confirm("'.$txt['sbox_KillShout'].'");
    			
    		}
    	// ]]></script>
    
    	<style type="text/css"><!-- // --><![CDATA[
    	<!--
    		.Kill
    		{
    			color: #ff0000;
    		}
    		.OddLine
    		{
     			font-family: '.$modSettings['sbox_FontFamily1'].';
    			font-style: normal;
     			font-size: '.$modSettings['sbox_TextSize1'].';
    			font-weight: normal;
    			color: '.$modSettings['sbox_TextColor1'].';
    		} 
    		.EvenLine
    		{
     			font-family: '.$modSettings['sbox_FontFamily2'].';
    			font-style: normal;
     			font-size: '.$modSettings['sbox_TextSize2'].';
    			font-weight: normal;
    			color: '.$modSettings['sbox_TextColor2'].';
    		} 
    		body
    		{
    			padding: 0px 0px 0px 0px;
    			background-color: '.$modSettings['sbox_BackgroundColor'].';
    		}
    		a:link
    		{
    			color: #ff0000;
    			text-decoration: none;
    		}
    		//-->
    	// ]]></style>';
    
    
    switch ($_REQUEST['action'])
    {
     
     	case "write":
     		if  ((!$context['user']['is_guest']) || ($modSettings['sbox_GuestAllowed'] == "1"))
    		{
    			// empty messages are not allowed
    			$content=$_REQUEST['sboxText'];
    			if(chop($content."") != "")
    			{
    				// get actual weekday
    				$days = array($txt['sbox_Sunday'],$txt['sbox_Monday'],$txt['sbox_Tuesday'],$txt['sbox_Wednesday'],$txt['sbox_Thurday'],$txt['sbox_Friday'],$txt['sbox_Saturday']);
    				$day=$days[date("w")];			// weekday
    				$date=$day." | ". date("G:i");	// time
    			
    				// handle spacial characters
    				$content=addslashes($content);
    			
    				// insert shout message into database
    				$sql = "insert into ".$db_prefix."sbox_content (name,content,time) values ('".$user_info['username']."','".$content."','$date')";
    				db_query($sql,__FILE__,__LINE__);
    			
    				// delete old shout messages (get id of last shouting and delete all shoutings as defined in settings
    				$result = db_query("select id from ".$db_prefix."sbox_content where name='".$user_info['username']."' and content='".$content."' and time='$date'",__FILE__,__LINE__);
    				$rows = mysql_fetch_assoc($result) ;
    				$sql = "delete from ".$db_prefix."sbox_content where id < '".($rows["id"]-$modSettings['sbox_MaxLines'])."'";
    				db_query($sql,__FILE__,__LINE__);
    			}
    		}
    		break;
     	case "kill":
     		if  ($context['user']['is_admin'])
     		{
     			$id = "".$_REQUEST['kill'];
     			if ($id != "")
     			{
    				$sql = "delete from ".$db_prefix."sbox_content where id=".$id."";
    				db_query($sql,__FILE__,__LINE__);
    			}
     		}
     		break;
    }
    
    // close header and open body
    echo '
    </head>
    <body>';
    
    // get smilie path
    $themedir = $settings['default_theme_url'];	// smf theme path
    $imgdir = $themedir."/images/";				// smilie path
    
    // get shout messages out of database
    $result = db_query("select * from ".$db_prefix."sbox_content order by id desc, time asc limit ".$modSettings['sbox_MaxLines'],__FILE__,__LINE__);
    if(mysql_num_rows($result))
    {
    	$count=0;	// counter to distinguish font color
    	while($row = mysql_fetch_assoc($result))
    	{
    		$count = $count + 1;						// increase counter
    		$name = $row["name"];						// user name
    		$date = $row["time"];						// shouting date and time
    		$content = stripslashes($row['content']);	// shouting content
    		
    		// replace smilie code with path to smilie image
    		$content = str_replace ($txt['sbox_smilie01_code'], '<img src="'.$imgdir.$txt['sbox_smilie01_file'].'" alt="'.$txt['sbox_smilie01_text'].'" title="'.$txt['sbox_smilie01_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie02_code'], '<img src="'.$imgdir.$txt['sbox_smilie02_file'].'" alt="'.$txt['sbox_smilie02_text'].'" title="'.$txt['sbox_smilie02_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie03_code'], '<img src="'.$imgdir.$txt['sbox_smilie03_file'].'" alt="'.$txt['sbox_smilie03_text'].'" title="'.$txt['sbox_smilie03_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie04_code'], '<img src="'.$imgdir.$txt['sbox_smilie04_file'].'" alt="'.$txt['sbox_smilie04_text'].'" title="'.$txt['sbox_smilie04_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie05_code'], '<img src="'.$imgdir.$txt['sbox_smilie05_file'].'" alt="'.$txt['sbox_smilie05_text'].'" title="'.$txt['sbox_smilie05_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie06_code'], '<img src="'.$imgdir.$txt['sbox_smilie06_file'].'" alt="'.$txt['sbox_smilie06_text'].'" title="'.$txt['sbox_smilie06_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie07_code'], '<img src="'.$imgdir.$txt['sbox_smilie07_file'].'" alt="'.$txt['sbox_smilie07_text'].'" title="'.$txt['sbox_smilie07_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie08_code'], '<img src="'.$imgdir.$txt['sbox_smilie08_file'].'" alt="'.$txt['sbox_smilie08_text'].'" title="'.$txt['sbox_smilie08_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie09_code'], '<img src="'.$imgdir.$txt['sbox_smilie09_file'].'" alt="'.$txt['sbox_smilie09_text'].'" title="'.$txt['sbox_smilie09_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie10_code'], '<img src="'.$imgdir.$txt['sbox_smilie10_file'].'" alt="'.$txt['sbox_smilie10_text'].'" title="'.$txt['sbox_smilie10_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie11_code'], '<img src="'.$imgdir.$txt['sbox_smilie11_file'].'" alt="'.$txt['sbox_smilie11_text'].'" title="'.$txt['sbox_smilie11_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie12_code'], '<img src="'.$imgdir.$txt['sbox_smilie12_file'].'" alt="'.$txt['sbox_smilie12_text'].'" title="'.$txt['sbox_smilie12_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie13_code'], '<img src="'.$imgdir.$txt['sbox_smilie13_file'].'" alt="'.$txt['sbox_smilie13_text'].'" title="'.$txt['sbox_smilie13_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie14_code'], '<img src="'.$imgdir.$txt['sbox_smilie14_file'].'" alt="'.$txt['sbox_smilie14_text'].'" title="'.$txt['sbox_smilie14_text'].'" border="0" />', $content);
    		$content = str_replace ($txt['sbox_smilie15_code'], '<img src="'.$imgdir.$txt['sbox_smilie15_file'].'" alt="'.$txt['sbox_smilie15_text'].'" title="'.$txt['sbox_smilie15_text'].'" border="0" />', $content);
    
    		// display shouting message and use a different color each second row
    		if ($count % 2)
    		echo '
    	<div class="OddLine">';
    		else
    		echo '
    	<div class="EvenLine">';
    		if ($context['user']['is_admin'])
    			echo '<a title="'.$txt['sbox_KillShout'].'" class="Kill" onclick="return killYesNo();" href="sboxDB.php?action=kill&kill='.$row['id'].'">[X]</a>';
    
    		echo '[&nbsp;'.$date.'&nbsp;]&nbsp;<b>&lt;'.$name.'&gt;</b>&nbsp;'.$content.'</div>';
    	}
    	
        echo '
    </body>
    </html>';
    }
    ?>
  • 26-07-2006, 03:41:44
    #4
    Shotboxın kodları...
  • 26-07-2006, 03:48:33
    #5
    $content=$_REQUEST['sboxText']; sanırım burası

    $content=htmlspecialchars($_REQUEST['sboxText'];
    olarak denermisin
  • 26-07-2006, 03:56:59
    #6
    Olmadı denedim ama olmadı
  • 26-07-2006, 04:01:03
    #7
    Onu yapınca shout box içinde Parse erorr veriyor code 73 bilmem ne diyo editlediğimiz yerde 73 satır olmuyo o zaman shot box çalışmıyo gözükmüyo Peki include olayı nasıl olur onu yapsak nolur ? onu yapabilirmiyiz html yememesi için include edebilirmiyiz ?
  • 26-07-2006, 04:03:10
    #8
    $content=htmlspecialchars($_REQUEST['sboxText'];
    parantezi kapatmamışım ben
    $content=htmlspecialchars($_REQUEST['sboxText']); olarak denediğine eminmisin? error vermemesi lazım
  • 26-07-2006, 04:07:02
    #9
    Teşekkürler