abonnement Unibet Coolblue Bitvavo
pi_46827620
quote:
Op donderdag 1 maart 2007 22:58 schreef saban het volgende:
Moet er ook nog een ander port open?
laat je router / modem / whatever het wel door?
misschien kan je daar een logfile zien van geblokkeerde requests?
  donderdag 1 maart 2007 @ 23:16:16 #242
12880 CraZaay
prettig gestoord
pi_46827659
quote:
Op donderdag 1 maart 2007 22:58 schreef saban het volgende:
Wat is de standaard poort voor mysql? Dat is 3306 toch?
Ik heb op mijn server thuis port 3306 opengezet, maar is nog steeds van buiten af niet bereikbaar.
Kun je je MySQL server helemaal niet bereiken, of kom je er gewoon niet in met je user? In het laatste geval moet je je user niet alleen toegang geven vanaf localhost waarschijnlijk.
pi_46827669
quote:
Op donderdag 1 maart 2007 21:26 schreef s00z het volgende:

[..]

nu maar zo gedaan:
[ code verwijderd ]

En dan:
[ code verwijderd ]
dan zou het zonder het hernoemen van die variabele ook moeten werken
pi_46827673
quote:
Op donderdag 1 maart 2007 23:15 schreef Xcalibur het volgende:

[..]

laat je router / modem / whatever het wel door?
misschien kan je daar een logfile zien van geblokkeerde requests?
Daar heb ik hem dus ook open gezet.
Mijn router ondersteund geen logfiles

Een deel van je IP is ook voldoende voor de firewall.
ne okuyon, bokmu var?
pi_46827702
quote:
Op donderdag 1 maart 2007 23:16 schreef CraZaay het volgende:

[..]

Kun je je MySQL server helemaal niet bereiken, of kom je er gewoon niet in met je user? In het laatste geval moet je je user niet alleen toegang geven vanaf localhost waarschijnlijk.
mysql_error zegt:
Lost connection to MySQL server during query

User heeft toegang vanaf %, dus overal vandaan.
ne okuyon, bokmu var?
pi_46827990
quote:
Op donderdag 1 maart 2007 22:50 schreef CraZaay het volgende:
$limitminimalizer = $page - '1';

Je trekt een string van een integer af? (ja, het werkt in PHP, maar da's nog geen reden om het te doen )
Nog leuker, als $_GET['page'] niet leeg of nul is dan is $page ook een string. En dan trek je dus een string van een string af in de hoop dat er een integer uit komt
  vrijdag 2 maart 2007 @ 01:18:29 #247
36568 s00z
geboren voor het geluk
pi_46832100
quote:
Op donderdag 1 maart 2007 23:23 schreef Light het volgende:

[..]

Nog leuker, als $_GET['page'] niet leeg of nul is dan is $page ook een string. En dan trek je dus een string van een string af in de hoop dat er een integer uit komt
Maar het werkt prima!
En anders niet.

Jullie hadden ook niet echt zinvolle suggesties als ik zo brutaal mag zijn

Maar wel tof dat jullie me ook proberen te helpen, nu moet ik nog mijn site een beetje veilig maken tegen injectie enzo, en hierboven heb ik een stuk gequote dat ik daartegen wil gebruiken..

Zal dat voldoende zijn denken jullie?

Hierzo:
1
2
3
4
5
6
<?php
$unsafeContentPage 
= isset($_GET['content']) ? $_GET['content'] : 'home';
if (!
preg_match('~^[a-z_]+$~i'$unsafeContentPage)) {
    
// Iets of iemand probeert iets fouts mee te geven
$unsafeContentPage 'home';
?>
  vrijdag 2 maart 2007 @ 08:53:19 #248
12880 CraZaay
prettig gestoord
pi_46836107
quote:
Op vrijdag 2 maart 2007 01:18 schreef s00z het volgende:

[..]

Maar het werkt prima!
En anders niet.
Ja, PHP is zo loosely typed dat het niet uit maakt. Het ligt niet aan jou dus

Over je injection 'probleem', daar kan ik je helaas niet mee werken. Als ik iets met PHP doe gebruik ik meestal een framework met ActiveRecord-achtige functionaliteit waar standaard injection in voorkomen wordt.
  vrijdag 2 maart 2007 @ 09:44:12 #249
85514 ralfie
!Yvan eht nioj
pi_46837129
quote:
Op vrijdag 2 maart 2007 01:18 schreef s00z het volgende:

[..]

Maar het werkt prima!
En anders niet.

Jullie hadden ook niet echt zinvolle suggesties als ik zo brutaal mag zijn

Maar wel tof dat jullie me ook proberen te helpen, nu moet ik nog mijn site een beetje veilig maken tegen injectie enzo, en hierboven heb ik een stuk gequote dat ik daartegen wil gebruiken..

Zal dat voldoende zijn denken jullie?

Hierzo:
[ code verwijderd ]
het is niet logisch om daar van alles zelf voor te maken als er prachtige functies zijn die dit automatisch doen. Kijk bijvoorbeeld is naar:
1
2
3
4
<?php
$query
=mysql_escape_string($_GET['page']);
$query=mysql_real_escape_string($_GET['page']);
?>
Mocht je ergens numerieke waarden willen, gebruik je een van deze twee
1
2
3
4
<?php
$query
=intval($_GET['id'])
$query=floatval($_GET['value'])
?>

afhankelijk van of je een heel getal (integer) will hebben of niet (float)

Tenslotte kun je ervoor kiezen om, als er alleen een beperkt aantal mogelijkheden zijn, deze direct te vergelijken, zoals:
1
2
3
4
5
6
7
8
<?php
$allpages
=array('home','forum','contact','intro','about');
if (
in_array($_GET['page'],$allpages)) {
   
$page=$_GET['page'];
} else {
   
$page=$allpages[0];
}
?>

suc6
pi_46839925
Ik heb een vraagje mbt $_FILES in php.
Wanneer ik een bestand upload door middel van een upload veld dan is er geen $_POST maar hij maakt er automatisch $_FILES van. Dit variable heeft:

$_FILES['userfile']['name']
The original name of the file on the client machine.

$_FILES['userfile']['type']
The mime type of the file, if the browser provided this information. An example would be "image/gif". This mime type is however not checked on the PHP side and therefore don't take its value for granted.

$_FILES['userfile']['size']
The size, in bytes, of the uploaded file.

$_FILES['userfile']['tmp_name']
The temporary filename of the file in which the uploaded file was stored on the server.

$_FILES['userfile']['error']

van php.net

Maar ik wil niet alleen de orginile bestandsnaam ['name'] maar het hele pad, dus: C:\blabla\bla\file.ext
Is dit mogelijk? Of wordt dit clientside nooit doorgestuurd?

Ik wil dit omdat ik nogal een lang formulier heb en als je een veld niet of niet goed invuldt dan krijg je netjes een rijtje errors en staan alle waarden nog steeds in het formulier, maar het file veld onthoudt ie de waarde niet van.

-
pi_46839977
@splendor

Standaard wordt het 'echte' pad niet doorgegeven, maar er is wel een truukje voor. Je kunt met javascript vlak voordat je een formulier submit de waarde uitlezen en in een hidden field zetten.

Nadeel: je kunt niet in die file inputs wegschrijven dat om te voorkomen dat een website opeens mag bepalen welke bestanden jij verstuurt, dat zou een enorm lek betekenen.
pi_46839989


[ Bericht 100% gewijzigd door mschol op 02-03-2007 11:29:59 ]
mentions en alerts staan uit, pm/dm mij
pi_46840172
quote:
Op vrijdag 2 maart 2007 11:29 schreef JeRa het volgende:
@splendor

Standaard wordt het 'echte' pad niet doorgegeven, maar er is wel een truukje voor. Je kunt met javascript vlak voordat je een formulier submit de waarde uitlezen en in een hidden field zetten.

Nadeel: je kunt niet in die file inputs wegschrijven dat om te voorkomen dat een website opeens mag bepalen welke bestanden jij verstuurt, dat zou een enorm lek betekenen.
Tnx, daar was ik al bang voor ja.

Nouja wat een oplossing zou zijn is het file uploaden los maken van een groot ander formulier, met een eigen submit knop. Is een handeling meer voor de gebruiker maar scheelt een hoop ellende.
-
  vrijdag 2 maart 2007 @ 12:09:00 #254
85514 ralfie
!Yvan eht nioj
pi_46841135
quote:
Op vrijdag 2 maart 2007 11:35 schreef splendor het volgende:

[..]

Tnx, daar was ik al bang voor ja.

Nouja wat een oplossing zou zijn is het file uploaden los maken van een groot ander formulier, met een eigen submit knop. Is een handeling meer voor de gebruiker maar scheelt een hoop ellende.
zou anders toch niet handig werken, de gebruiker zou elke keer dat het formulier een fout bevat onnnodig het bestand opnieuw moeten uploaden
  vrijdag 2 maart 2007 @ 12:39:06 #255
12880 CraZaay
prettig gestoord
pi_46842021
quote:
Op vrijdag 2 maart 2007 11:27 schreef splendor het volgende:

Maar ik wil niet alleen de orginile bestandsnaam ['name'] maar het hele pad, dus: C:\blabla\bla\file.ext
Is dit mogelijk? Of wordt dit clientside nooit doorgestuurd?

Ik wil dit omdat ik nogal een lang formulier heb en als je een veld niet of niet goed invuldt dan krijg je netjes een rijtje errors en staan alle waarden nog steeds in het formulier, maar het file veld onthoudt ie de waarde niet van.
Zelfs al kan PHP het hele pad ergens vandaag toveren, dan nog heb je er niets aan. Je kunt de file input in de html namelijk niet populeren met een value uit veiligheidsoverwegingen.
  vrijdag 2 maart 2007 @ 12:42:36 #256
36568 s00z
geboren voor het geluk
pi_46842130
quote:
Op vrijdag 2 maart 2007 09:44 schreef ralfie het volgende:

[..]

het is niet logisch om daar van alles zelf voor te maken als er prachtige functies zijn die dit automatisch doen. Kijk bijvoorbeeld is naar:
[ code verwijderd ]

Mocht je ergens numerieke waarden willen, gebruik je een van deze twee
[ code verwijderd ]

afhankelijk van of je een heel getal (integer) will hebben of niet (float)

suc6
Juist, dus als iemand een query in wil vullen mtb injectie (want dat is injectie toch?) dan 'beschadigd' de variabele als het ware als er bij float een letter wordt ingevuld...

Weet namelijk niet precies wat je kan doen om een database te beschadigen oid.

Heb even rondgeklooid met die dingen die je me gaf, en ze zullen de dbase in ieder geval ongevoelig maken voor andere input dan cijfers.
Nu alleen nog zorgen dat ik de woorden escape.
pi_46842505
quote:
Op vrijdag 2 maart 2007 11:35 schreef splendor het volgende:

[..]

Nouja wat een oplossing zou zijn is het file uploaden los maken van een groot ander formulier, met een eigen submit knop. Is een handeling meer voor de gebruiker maar scheelt een hoop ellende.
Sommige sites gebruiken een apart systeem voor het uploaden van bestanden. Een gebruiker kan dan los bestanden uploaden zodat deze dan tijdelijk ergens worden weggezet en gekoppeld aan de sessie. Als vervolgens het formulier een fout bevat, dan zijn de bestanden niet verloren gegaan nadeel is dat je dan af en toe de boel moet laten schoonmaken zodra een sessie verloopt.
pi_46843429
1
2
3
4
5
R60: if($POST){
R61: $query ="INSERT INTO `kasboek` ( `id` , `datum` , `type` , `rekeningnr` , `van` , `categorie` , `default` , `bedrag` , `commentaar` ) VALUES ('', '".$POST[datum]."' , '".$POST[type]."', '".$POST[rekeningnr]."', '".$POST[van]."', '".$POST[categorie]."', '".$POST[`default`]."','".$POST[bedrag]."', '".$POST[commentaar]."');";
R62: $result = mysql_query($query) or ( $error = mysql_error());
R63: $data .= ($result) ? 'Afschrift toegevoegd' : 'Er ging wat fout:<br />'.$result;
R64:}

$POST is gewoon de gecontroleerde $_POST

En nu de foutmelding:

Warning: shell_exec() has been disabled for security reasons in C:domains\_adminkasboek.php on line 61




Edit: '".$POST[`default`]."' veranderd in '".$POST['default']."
Maar wat een gare waarschuwing'
pi_46843583
't Staat er toch vrij duidelijk? Je kan shell_exec() niet gebruiken wegens veiligheidsredenen.

Eerst goed lezen, er staat helemaal geen shell_exec() .
  FOK!-Schrikkelbaas vrijdag 2 maart 2007 @ 13:26:54 #260
1972 Swetsenegger
Egocentrische Narcist
pi_46843675
Sowieso... waarom die backticks?
pi_46843678
Overigens moet je binnen die $POST dingen waarschijnlijk wel quotes gebruiken, dus $POST['bedrag'] in plaats van $POST[bedrag].
pi_46844010
ja code is niet echt netjes.

Waarom de ticks, default is gereserveerd
pi_46844408
quote:
Op vrijdag 2 maart 2007 13:26 schreef Swetsenegger het volgende:
Sowieso... waarom die backticks?
Als je dat consequent doet kan er nooit een probleem komen met reserved words wat weer wel raar is, is dat MySQL heeft gekozen voor backticks en niet de ANSI dubbele quotes.
pi_46844506
Ik loop het nog wel na en dan word het wel consequent gedaan maar ben soms een luie donder
pi_46847429
Ik ben op het moment vaak met fopen bezig, en ik wil graag bijhouden hoeveel bandbreedte ik er doorheen jaag.

Op het moment doe ik dat door elke keer als ik een file open en deze regel voor regel met een foreach doorneem, de string lengte van de huidige regel te pakken, en de lengte hiervan bij een variabele toe te voegen. Dat door 1024 delen en ik heb het aantal kilobyte.

Zit ik toevallig in de goede richting?
pi_46848177
quote:
Op vrijdag 2 maart 2007 15:06 schreef Geqxon het volgende:
Ik ben op het moment vaak met fopen bezig, en ik wil graag bijhouden hoeveel bandbreedte ik er doorheen jaag.

Op het moment doe ik dat door elke keer als ik een file open en deze regel voor regel met een foreach doorneem, de string lengte van de huidige regel te pakken, en de lengte hiervan bij een variabele toe te voegen. Dat door 1024 delen en ik heb het aantal kilobyte.

Zit ik toevallig in de goede richting?
Ja...maar als je het hele bestand inleest is het natuurlijk veel simpeler om filesize() te gebruiken
pi_46848269
quote:
Op vrijdag 2 maart 2007 15:27 schreef JeRa het volgende:

[..]

Ja...maar als je het hele bestand inleest is het natuurlijk veel simpeler om filesize() te gebruiken
Een website in dit geval, dus volgens mij is dat niet mogelijk.

* Geqxon duikt TextMate weer even in

Edit Bingo!

1
2
3
4
5
<?php
           $headers
= get_headers($url, 1);
           if ((!
array_key_exists("Content-Length", $headers))) { return false; }
           return
$headers["Content-Length"];
?>


Edit

Met mijn regelteller methode: 41960 bytes
Met bovenstaande methode: 52848 bytes

Zat ik toch goed, al gebruik ik wel de header informatie. Ik gok dat het verschil is omdat hij dan ook het heen-en-weer verkeer + de header informatie meetelt.

[ Bericht 33% gewijzigd door Geqxon op 02-03-2007 15:38:43 ]
pi_46848529
Even een kort vraagje: $_POST, $_GET en $_COOKIE moet je altijd 'beveiligen' tegen gevaarlijke waardes, maar hoe zit dat met $_SESSION? Kan een gebruiker/hacker daar ook in veranderen?
  vrijdag 2 maart 2007 @ 15:40:40 #269
36568 s00z
geboren voor het geluk
pi_46848729
iemand nog tips voor mijn security wat ik hierboven beschrijf?
pi_46849786
quote:
Op vrijdag 2 maart 2007 15:35 schreef Piles het volgende:
Even een kort vraagje: $_POST, $_GET en $_COOKIE moet je altijd 'beveiligen' tegen gevaarlijke waardes, maar hoe zit dat met $_SESSION? Kan een gebruiker/hacker daar ook in veranderen?
Nee, dat kan de gebruiker niet. De $_SESSION wordt alleen op de server gebruikt.

De client krijgt echter wel en cookie op zijn pc met het sessie-id erin. Dus die moet je wel controleren op het moment dat je het sessie-id uitleest.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')