Bugs im Chat

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Nalia
Mitglied
Beiträge: 70
Registriert: 29.07.2002 08:05

Bugs im Chat

Beitrag von Nalia »

Hallo,

in unserem PHP-Chat (phpHeaven) soll es Bugs geben, die anscheinend einen Chat-Befehl zum Erlauschen von "geflüsterten" Chatmitteilungen ermöglichen - für die User ist das natürlich sehr blöd :-? .

Angeblich sollen diese Bugs in der export.php sein. Kann mir jemand dabei helfen, sie aufzuspüren und das Skript umzumodeln? Ich selbst habe keinerlei Ahnung von der Sache :cry: .

Code: Alles auswählen

<?php
// Get the names and values for vars sent to this script
if (isset($HTTP_GET_VARS))
{
	while(list($name,$value) = each($HTTP_GET_VARS))
	{
		$$name = $value;
	};
};

// Fix a security hole
if (isset($L) && !is_dir('./localization/'.$L)) exit();
	
require("config/config.lib.php");
require("localization/".$L."/localized.chat.php");
require("lib/database/".C_DB_TYPE.".lib.php");
require("lib/release.lib.php");
require("lib/clean.lib.php");

// Avoid server configuration for magic quotes
set_magic_quotes_runtime(0);

// Translate to html special characters, and entities if message was sent with a latin 1 charset
$Latin1 = ($Charset == "iso-8859-1");
function special_char($str,$lang)
{
	return ($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
}

// ** Get messages **

// Define the SQL query (depends on values for ignored users list and on whether to display
// notification messages or not

$CondForQuery = "username NOT LIKE 'SYS %' AND ";
if (isset($Ign))
{
	$IgnoreList = "'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
	$CondForQuery .= "username NOT IN (${IgnoreList}) AND ";
};
$CondForQuery .= "(address = ' *' OR (room = '$R' AND (address IN ('$U','') OR username = '$U')))";

$LimitForQuery = (isset($Limit) && $Limit != "") ? " LIMIT ".$Limit : "";

$DbLink = new DB;
$DbLink->query("SELECT m_time, username, latin1, address, message FROM ".C_MSG_TBL." WHERE ".$CondForQuery." ORDER BY m_time DESC".$LimitForQuery);

// Format and display new messages
if($DbLink->num_rows() > 0)
{
	$MessagesString = "";
	while(list($Time, $User, $Latin1, $Dest, $Message) = $DbLink->next_record())
	{
		$NewMsg = "<P CLASS=\"msg\">";
		if ($ST == 1) $NewMsg .= "<SPAN CLASS=\"time\">".date("H:i:s", $Time +  C_TMZ_OFFSET*60*60)."</SPAN> ";
		if ($Dest != " *")
		{
			$User = special_char($User,$Latin1);
			if ($Dest != "") $Dest = "]>[".htmlspecialchars(stripslashes($Dest));
			$NewMsg .= "<B>[${User}${Dest}]</B> $Message</P>";
		}
		else
		{
			$NewMsg .= " <SPAN CLASS=\"notify\">[".L_ANNOUNCE."] $Message</SPAN>";
		};

		// Separator between messages sent before today and other ones
		if (!isset($day_separator) && date("j", $Time +  C_TMZ_OFFSET*60*60) != date("j", time() +  C_TMZ_OFFSET*60*60))
		{
			$day_separator = "<P CLASS=\"msg\"><SPAN CLASS=\"notify\">--------- ".($O == 0 ? L_TODAY_UP : L_TODAY_DWN)." ---------</SPAN></P>";
		};

		$MessagesString = $NewMsg.((isset($day_separator) && $day_separator != "") ? "\n".$day_separator : "")."\n".$MessagesString;

		if (isset($day_separator)) $day_separator = "";		// Today separator already printed
	};
};

$DbLink->clean_results();
$DbLink->close();


if (isset($MessagesString) && $MessagesString != "")
{
	// Save messages to a file
	header("Content-Type: application/octetstream");
	header("Content-Disposition: attachement; filename=\"chat_save_".date("mdY").".htm\"");
	?>
	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
	<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
	<HEAD>
		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=<?php echo($Charset); ?>">
		<TITLE><?php echo(APP_NAME." - ".htmlspecialchars(stripslashes($R))." - ".date("F j, Y")); ?></TITLE>
		<STYLE>
		<?php
			if (isset($FontName) && $FontName != "")	// For the 'x-user-defined' charset
			{
				?>
				* {font-family: <?php echo($FontName); ?>, sans-serif;}
				<?php
			}
			elseif ($Charset == "iso-8859-1")
			{
				?>
				* {font-family: helvetica, arial, geneva, sans-serif;}
				<?php
			};
			?>
			BODY.mainframe
			{
				background-color: #CCCCFF;
				color: #000000;
				font-size: <?php echo($FontSize); ?>pt;
				font-weight: 400;
				margin: 5px;
			}

			A
			{
				text-decoration: underline;
				color: #FFFFFF;
				font-weight: 600;
			}

			A:hover, A:active
			{
				color: #FF9900;
				text-decoration: none;
			}

			.msg
			{
				margin-top: 0px;
				margin-bottom: 2px;
				margin-left: <?php echo($Charset == "windows-1256" ? "5" : "55"); ?>px;
				margin-right: <?php echo($Charset == "windows-1256" ? "55" : "5"); ?>px;
				text-indent: -50px;
			}

			.time
			{
				direction: ltr;
				unicode-bidi: embed;
				color: #000000;
				font-size: 8pt;
			}

			.notify
			{
				color: #666699;
				font-size: <?php echo($FontSize); ?>pt;
				font-weight: 600;
			}
		</STYLE>
	<HEAD>

	<BODY CLASS="mainframe">
	<?php
	echo($MessagesString);
	unset($MessagesString);
	?>
	</BODY>
	</HTML>
	<?php
	exit;
}
?>

Gruß,
Nalia
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Welche Version des Chats nutzt du ?
Benutzeravatar
Nalia
Mitglied
Beiträge: 70
Registriert: 29.07.2002 08:05

Beitrag von Nalia »

Ich habe Version 0.14.5.

Jetzt geht "das Gerücht" um, dass einfach die export.php3 gelöscht werden muss, um das Problem zu lösen.

Allerdings habe ich nur eine export.php - entspricht die wohl der export.php3? Wäre es empfehlenswert, sie zu löschen oder hängen da noch andere wichtige Funktionen dran? Leider kann ich nicht 'mal das Ergebnis prüfen, da im Moment nicht rauszukriegen ist, mit welchem Chatbefehl gelauscht werden konnte.
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Ja, mit export.php und export.php3 is das gleiche gemeint. Was für ´ne Funktion hat denn die export.php ? Wann, wie wird sie aufgerufen/genutzt ? Zur Not einfach sichern und dann löschen, wenn irgendwas fehlt, die Datei wieder hochladen. ;)
Benutzeravatar
Nalia
Mitglied
Beiträge: 70
Registriert: 29.07.2002 08:05

Beitrag von Nalia »

Ja klar ;) . Das Problem ist halt nur, dass ich nicht 'mal den Zustand vorher/nachher kenne, also selbst nicht überprüfen kann, ob sich mit dem Löschen was geändert hat :roll: .
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Wenn du weiterhin chatten (gegebenfalls administrieren) kannst, wird wohl die export.php ned unbedingt gebraucht. Dem Namen nach wird irgendwas damit "exportiert". :grin:
Du kannst ja ma deiner Quelle auf´n Zahn fühlen, wie man das "Lauschen" reproduzieren kann.
Benutzeravatar
Nalia
Mitglied
Beiträge: 70
Registriert: 29.07.2002 08:05

Beitrag von Nalia »

Acid hat geschrieben:Wenn du weiterhin chatten (gegebenfalls administrieren) kannst, wird wohl die export.php ned unbedingt gebraucht. Dem Namen nach wird irgendwas damit "exportiert". :grin:
Du kannst ja ma deiner Quelle auf´n Zahn fühlen, wie man das "Lauschen" reproduzieren kann.
Ok, ich versuch' das 'mal aus ihr rauszuquetschen :grin: .
Antworten

Zurück zu „Coding & Technik“