6.7 Ciekawostki

Rozdział zawiera ciekawostki dotyczące samego protokołu i jego poszczególnych elementów, które godne są odnotowania.

6.7.1 Inteligentny parser serwera

Parser XML serwera stwarza pozory inteligentnego, ciekawe, kto go implementował, może to jakaś autorska, ręczna robótka na char, która operuje tylko na znakach <, / i >?

Wysyłając do serwera niepoprawny składniowo pakiet autoryzacji:

<iq type="set" id="456C287C">
    <query xmlns="jabber:iq:auth">
        <username>malcom</juser>
        <digest>aab5c5f9a3eea18023d99405509fea968ada18ec</dupa>
        <resource>t</resource>
        <host>tlen.pl</host>
    </query>
</iq>

Jeśli pakiet ten zawiera poprawne dane autoryzacyjne, zostaniemy zalogowani do sieci.

Wysyłając na przykład wiadomość pakietem:

<message to="malcom@tlen.pl" type="chat">
    <body>tresc</dupa123>
</dupa123>

Nasz odbiorca oczywiście wiadomość tą otrzyma.

Może serwer jest inteligentny i wie co chcieliśmy osiągnąć, mimo popełnionych przez nas błędów;)

Wygląda na to, że parser serwera, nie bierze pod uwagę nazw znaczników zamykających, bo przy próbie wysłania pakietu z błędami składniowymi znaków <, / i >, na przykład pakietu:

<message to="malcom@tlen.pl" type="chat">
    <body>tresc</body><
</message>

Otrzymamy informacje o błędnym XML-u:

<stream:error>Invalid XML</stream:error>

I serwer zerwie z nami połączenie.

Niedokładność i niedopracowanie parsera jest przyczyna różnych błędów. Niektóre z nich były wykorzystywane do niecnych celów.

Inny przykład, wysłanie pakietu o strukturze:

<m ni/>
<m af="omg" to="malcom@tlen.pl" type="chat">
    <body>aaa</.>
</.>

Skutkuje u odbiorcy otrzymaniem:

<m niaf="omg" type="chat" f="malcom@tlen.pl">
    <body>aaa</body>
</m>

Zaskakujący jest ten serwer :P

Wiele rożnych przykładów można byłoby tutaj przytoczyć, ale nie w tym rzecz.

Kiedyś, wysyłając pakiet z "odpowiednimi" błędami można było zresetować czaty tlenowe, a nawet rozłączyć "zdalnie" danego użytkownika z serwerem tlenu, wysyłając do niego odpowiednio spreparowany pakiet wiadomości.

Większość tych pojedynczych błędów poprawiono, ale widać, że parser serwera dalej zawiera rażące błędy i niedoróbki.

Tę stronę ostatnio zmodyfikowano 11 sierpnia 2007 03:07:11