Archiwum dla kategorii PHP

Jak wysłać zdalnie wiadomość na Twittera?

Cześć hakerzy,

Dziś drogie dzieci nauczymy się jak zdalnie wysłać wiadomość na najpopularniejszego w świecie mikrobloga czyli Twittera. Łaaał …

function send2twitter($message, $twitter_user, $twitter_password) {
	$context = stream_context_create(
		array (
			'http' => array(
				'method' => 'POST',
				'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($twitter_user . ':' . $twitter_password))."Content-type: application/x-www-form-urlencoded\r\n",
				'content' => http_build_query(array('status' => $message)),
				'timeout' => 5,
			),
		)
	);
	return file_get_contents('http://twitter.com/statuses/update.xml', false, $context);
}

Jak widać banalnie prosta funkcja send2twitter jest tak prosta, że każdy hakier sobie dalej poradzi sam …  W przypadku pytań można teoretycznie zostawić komentarz.

, ,

Brak komentarzy

Cross-site scripting – bezpieczeństwo formularzy

Cross-site scripting (XSS lub inaczej CSS), to jak wiadomo taki rodzaj ataku na serwisy WWW, najczęściej przez źle walidowane formularze i najczęściej przez wstrzykiwany przez nie kod JavaScript.

Pokażę dziś jak można łatwo zabezpieczyć swoje formularze. Wystarczy kilka prostych wierszy kodu i po problemie. Najważniejsze jest aby całą tablicę $_POST umieć łatwo wyczyścić. Pokaże jak to zrobić rekurencyjnie.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Common() {
        public static function TidyString($str) {
                $str = stripslashes($str);
                $str = htmlspecialchars($str);
                return $str;
        }
 
        public static function TidyArray(&$array) {
                foreach((array)$array as $key => $value) {
                        if( !is_array($value) ) {
                                $array[$key] = Common::TidyString($value);
                        } else {
                                $array[$key] = Common::TidyArray($value);
                        }
                }
                return $array;
        }
}

W naszej klasie Common, widzimy dwie proste metody, TidyArray() oraz TidyString(). TidyArray() działa rekurencyjnie, obiega elementy tablicy i jeśli wartość nie jest tablicą to ją czyści poprzez TidyString(), jeśli element jest tablicą to wywołujemy naszą metodę rekurencyjnie na danym fragmencie tablicy. Wartości tablicy przekazujemy metodzie przez referencje.

Mając taka klasę możemy umieścić takie wywołanie gdzieś np. w pliku konfiguracyjnym naszej aplikacji.

1
$_POST = Common::TidyArray($_POST);

Należy pamiętać, że nasza metoda TidyString() posiada podstawowe funkcje „czyszczące”, można sobie ją dowolnie rozszerzyć np. dodać funkcję strip_tags(). Dodam jeszcze, że należy być ostrożnym przy filtrowaniu danych po serializacji.

, , , , , , , , , , , , ,

Brak komentarzy

Dziury w Internet Explorer

Szału nie ma, każdy zna, wszędzie są nie tylko w IE, podobno w Firefoxie jest jeszcze więcej ;-) Czytałem właśnie jakiś artykulik o tym, że Microsoft będzie dziś łatał jakąś super poważną dziurę i przypomniało mi się jak mnie dziś Explorer pięknie zaskoczył.

Weźmy pod lupę taki prosty kod HTML:

<a href="">link</a>

Czego się spodziewamy? Że atrybut href (Hypertext REFerence) domyślenie przyjmie wartość tego co mamy obecnie w pasku adresu – tak jest w Firefox. W Internet Explorerze 7 nie zawsze. Dla przykładowego adresu:

http://server/folder/plik.xml

Nasz link będzie wskazywał na:

http://server/folder/

A potem klient do Ciebie pisze – „czemu to k*** nie działa w IE„!

Szybki fix takiej sytuacji w PHP, użyj:

$_SERVER['REQUEST_URI']

, , , ,

Brak komentarzy