konto usunięte
Marcin Staniszczak Programista Python
Temat: PHP QUIZ
Nikt się nie piszę to znowu ja. Co zwróci:
<?php
$t = '2003/02/30';
var_dump(strtotime($t));
Konrad
Karpieszuk
WordPress Plugin
Compatibility
Assurance for WPML
Marcin Staniszczak Programista Python
Temat: PHP QUIZ
Jest zadanie;-) Nie spojrzałeś na datę i poszło Ci łatwiej;-) Ty następny ;-)Ja bym pomyślał o jakim false/null/error ;-)Marcin Staniszczak edytował(a) ten post dnia 27.04.10 o godzinie 12:29
Konrad
Karpieszuk
WordPress Plugin
Compatibility
Assurance for WPML
Temat: PHP QUIZ
e tam :) jak dla mnie zadanie powinno byc takie, ze nie mozna go rozwiazac po prostu odpalając kod z zadania.to ja mam teraz zadanie nietypowe, bo bez kodu :)
wyobraź sobie ze pracujesz jako programista jakiegoś opensource CMSa. wlasie rozpoczęła się dyskusja nad stylem kodowania. część z dyskutantów twierdzi, że pliki skryptów php powinny być zawsze zakończone znaczkiem ?> (jeśli po ostatniej komendzie php nie ma oczywiscie jakiegos dalszego kodu html), a część uważa żeby skrypty po prostu kończyły się ostatnia komendą bez zamykania bloku php.
podaj po jednym argumencie za zamykaniem ?> w takim projekcie i przeciw zamykaniu.
Marcin Staniszczak Programista Python
Temat: PHP QUIZ
Za:- np. taki jEdit krzyczy jak nie ma ?> ;-)
Przeciw:
- jedna linia/znak za ?> i mamy błąd np. przy wysyłaniu nagłówków bez ob_start(). Brak ?> nie daje nam żadnych znaków które mogły by się przypadkiem znaleźć na końcu pliku (głównie chodzi o puste linie).
Konrad
Karpieszuk
WordPress Plugin
Compatibility
Assurance for WPML
Temat: PHP QUIZ
Przeciw: trafiłeś :)Za: tu się sam zamotałem... :)
Miałem argument taki, że często w programach opensource są próby ataków przez doklejanie do konca pliku kodu ulatwiajacego przejecie strony. Ale po przemysleniu wymyslilem ze wstawienie ?> w zaden sposob przed tym nie uratuje :)
wiec niech bedzie ze jEdit, wygrales i zadawaj ;)
Marcin Staniszczak Programista Python
Temat: PHP QUIZ
Mamy:
<?php
$arr = array('ala', 'ma', 'kota');
print_r($arr);
unset($arr[1]);
print_r($arr);
co zwraca:
Array
(
[0] => ala
[1] => ma
[2] => kota
)
Array
(
[0] => ala
[2] => kota
)
Jak naprościej po unset osiągnąć zamiast:
Array
(
[0] => ala
[2] => kota
)
to:
Array
(
[0] => ala
[1] => kota
)
konto usunięte
Temat: PHP QUIZ
array_values()Marcin Staniszczak Programista Python
Temat: PHP QUIZ
Zgadza się:-) Teraz Ty ;-)konto usunięte
Temat: PHP QUIZ
$block = null;
$id = $_GET['id'] ?: 0;
if ( !isset( $block )
&& is_numeric( $id )
&& $_SERVER['SERVER_NAME'] == 'nasz.serwer.example.pl' )
{
pokaz_tajne_dane( $id );
}
Co tu jest niedobre, niebezpieczne, niewłaściwe?
// EDIT: poprawka formatowania kodu
// EDIT: Wpisanie http://nasz.serwer.example.pl/?id=5 powinno pokazać nam tajne dane o id=5.Łukasz Karpuć edytował(a) ten post dnia 27.04.10 o godzinie 16:10
Bartłomiej
Ogryczak
Backend Developer @
Layar
Temat: PHP QUIZ
Łukasz Karpuć:
$block = null;
$id = $_GET['id'] ?: 0;
if ( !isset( $block )
&& is_numeric( $id )
&& $_SERVER['SERVER_NAME'] == 'nasz.serwer.example.pl' )
{
pokaz_tajne_dane( $id );
}
Co tu jest niedobre, niebezpieczne, niewłaściwe?
Coś poza użyciem is_numeric() zamiast is_int()?
Maciej
W.
a czy ty masz swój
ręcznik?...
Krzysztof
Szelążek
Senior .net
Developer
Temat: PHP QUIZ
Łukasz Karpuć:
$block = null;
$id = $_GET['id'] ?: 0;
if ( !isset( $block )
&& is_numeric( $id )
&& $_SERVER['SERVER_NAME'] == 'nasz.serwer.example.pl' )
{
pokaz_tajne_dane( $id );
}
Co tu jest niedobre, niebezpieczne, niewłaściwe?
// EDIT: poprawka formatowania kodu
// EDIT: Wpisanie http://nasz.serwer.example.pl/?id=5 powinno pokazać nam tajne dane o id=5.Łukasz Karpuć edytował(a) ten post dnia 27.04.10 o godzinie 16:10
1. W 2 lini powinno byc $id = $_GET['id'] ? $_GET['id'] : 0;
2. is_numeric( $id ) dla $id = 0 jest zawsze true
Bartłomiej
Ogryczak
Backend Developer @
Layar
Temat: PHP QUIZ
Maciej Wróbel:
?: 0;
tutaj jeszcze chyba czegoś brakuje:>
"Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise."
konto usunięte
Temat: PHP QUIZ
Bartłomiej Ogryczak:
Coś poza użyciem is_numeric() zamiast is_int()?
Poza ;)
konto usunięte
Temat: PHP QUIZ
Krzysztof Szelążek:
1. W 2 lini powinno byc $id = $_GET['id'] ? $_GET['id'] : 0;
2. is_numeric( $id ) dla $id = 0 jest zawsze true
1. Nie powinno ;) (dla wersji < 5.3 tak)
2. Być może, ale dla innych niekoniecznie.
Pytanie głównie o kwestie zaufania do danych
// edit: uściślanie ;)Łukasz Karpuć edytował(a) ten post dnia 27.04.10 o godzinie 18:29
Bartłomiej
Ogryczak
Backend Developer @
Layar
Temat: PHP QUIZ
Łukasz Karpuć:
Pytanie głównie ociera się o bezpieczeństwo danych i tego, co wyświetlamy, i komu :)
// lub precyzyjniej - o kwestie zaufania do danych
1. zewnętrzne ID powinny być hashami, dajmy na to sha1($id.$sekret) albo jeszcze lepiej sha1($id.$sekret.$userId)
2. puszczanie tajnego ID w URL-u nie jest dobrym pomysłem
No, ale to chyba nic konkretnie z PHP.
konto usunięte
Temat: PHP QUIZ
Bartłomiej Ogryczak:
Łukasz Karpuć:
Pytanie głównie ociera się o bezpieczeństwo danych i tego, co wyświetlamy, i komu :)
// lub precyzyjniej - o kwestie zaufania do danych
1. zewnętrzne ID powinny być hashami, dajmy na to sha1($id.$sekret) albo jeszcze lepiej sha1($id.$sekret.$userId)
2. puszczanie tajnego ID w URL-u nie jest dobrym pomysłem
No, ale to chyba nic konkretnie z PHP.
Za bardzo się koncentrujesz na id, ale w sumie o to mi chodziło, bo to zagadka z morałem ;)
(Oczywiście masz rację, ale nie o to tu głównie chodzi, bo jest coś na co mało osób zwraca uwagę. Przypomnę, że chodzi o zaufanie do danych.)
// podpowiedź:
Łukasz Karpuć edytował(a) ten post dnia 27.04.10 o godzinie 19:17
function pokaz_tajne_dane( $id )
{
if ( !is_int( $id ) )
{
throw new Exception('aaaaaaa!');
}
$escaped_server_name = escape_sql( $_SERVER['SERVER_NAME'] );
$sql = "SELECT * FROM dane WHERE id = $id AND server_name = '$escaped_server_name'";
// wyświetlmy dane
var_dump( query_sql( $sql ) );
// zaktualizujmy statystyki
$sql = "UPDATE stats SET gets = gets + 1 WHERE server_name = '$escaped_server_name'";
execute_sql( $sql );
}
Bartłomiej
Ogryczak
Backend Developer @
Layar
Temat: PHP QUIZ
Łukasz Karpuć:
Bartłomiej Ogryczak:
Łukasz Karpuć:
Pytanie głównie ociera się o bezpieczeństwo danych i tego, co wyświetlamy, i komu :)
// lub precyzyjniej - o kwestie zaufania do danych
1. zewnętrzne ID powinny być hashami, dajmy na to sha1($id.$sekret) albo jeszcze lepiej sha1($id.$sekret.$userId)
2. puszczanie tajnego ID w URL-u nie jest dobrym pomysłem
No, ale to chyba nic konkretnie z PHP.
Za bardzo się koncentrujesz na id, ale w sumie o to mi chodziło, bo to zagadka z morałem ;)
(Oczywiście masz rację, ale nie o to tu głównie chodzi, bo jest coś na co mało osób zwraca uwagę. Przypomnę, że chodzi o zaufanie do danych.)
// podpowiedź:
function pokaz_tajne_dane( $id )
{
if ( !is_int( $id ) )
{
throw new Exception('aaaaaaa!');
}
$escaped_server_name = escape_sql( $_SERVER['SERVER_NAME'] );
$sql = "SELECT * FROM dane WHERE id = $id AND server_name = '$escaped_server_name'";
// wyświetlmy dane
var_dump( query_sql( $sql ) );
// zaktualizujmy statystyki
$sql = "UPDATE stats SET gets = gets + 1 WHERE server_name = '$escaped_server_name'";
execute_sql( $sql );
}
Ja bym po pierwsze nie robił tego tak, tylko:
$stmt = $dbh->prepare("SELECT * FROM dane WHERE id = ? AND server_name = ?");
$stmt->execute(array($id,$_SERVER['SERVER_NAME']))
var_dump($stmt->fetch());
Po drugie przypuszczam, że może Ci chodzić o to:
$_SERVER['SERVER_NAME'] = 0;
var_dump($_SERVER['SERVER_NAME'] == 'nasz.serwer.example.pl');
bool(true)
Tylko nie bardzo widzę co to by dało, jeśli w WHERE ponownie masz $_SERVER['SERVER_NAME'], więc miałbyś "SELECT * FROM dane WHERE id = $id AND server_name = '0'", co nie dałoby tego samego rezultatu co "SELECT * FROM dane WHERE id = $id AND server_name = 'nasz.serwer.example.pl'"
Podobne tematy
-
PHP » Narzędzia do PHP -
-
PHP » counter.php -
-
PHP » php wyciąganie danych z pliku tekstowego -
-
PHP » Darmowy skrypt PHP do testów (quizów) online -
-
PHP » Jak zapisac dane z php w access log'u (nginx)? -
-
PHP » Programista PHP- projekt w Poznaniu -
-
PHP » php proxy ftp -
-
PHP » Różnice w wynikach z JS i PHP -
-
PHP » PHP przekazywanie danych -
-
PHP » Problem z połączeniem PHP z MySQL Cluster -
Następna dyskusja: