Upload scannen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Outsystems Developer Medior

Dit ga je doen Bouwen aan nieuwe en innovatieve applicaties; Maken van koppelingen tussen Outsystems en het bestaande applicatielandschap; Troubleshooting op bestaande software. Hier ga je werken De organisatie is internationale speler binnen de bouwbranche en richt zich op de infrastructuur, zowel boven als onder de grond. Ze zijn ruim 1100 man groot en maken op IT vlak een mooie groei door. Als ervaren Developer kom je te werken op een IT-afdeling van zo'n 25 man groot. Een aantal jaar geleden hebben ze de keuze gemaakt om zich meer te gaan richten op ontwikkeling en door de groei van de

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

Software Developer C++ en Perl

Ben je een slimme en enthousiaste universitair opgeleide bèta die graag bij een relatief klein softwarebedrijf wil werken waar de sfeer goed is en eigen inbreng gewaardeerd wordt? Wij, IntelliMagic in Leiden, ontwikkelen technisch hoogwaardige software op het gebied van IT infrastructuur performance analytics. Het type software zorgt voor intellectueel interessante uitdagingen. We ontwerpen de producten zelf en verkopen deze als off-the-shelf software aan grote bedrijven in Europa en de VS. Wij zoeken een ervaren C++ software engineer met kennis van Perl voor een van onze ontwikkelteams. Werkzaamheden Samen met de andere ontwikkelaars specificeren, ontwerpen en implementeren van nieuwe functionaliteit

Bekijk vacature »

Traineeship Java Developer

Functie Wat ga je doen als Java Developer? Jij start via ons bij deze opdrachtgever als Trainee Java ontwikkelaar, tijdens het traineeship ga je in 1 jaar van de basis naar professioneel Java ontwikkelaar. Je start samen met een groep trainees, volgt de aangeboden cursussen en gaat aan de slag bij één van onze opdrachtgevers. Na een aantal maanden volgt de volgende opdracht. Door de groei in jouw rol kom je op steeds complexere opdrachten terecht. Veel afwisseling dus. Collega’s met ervaring helpen je bij deze groei en samen met jouw coach ga je een persoonlijke leerplan opzetten om jou

Bekijk vacature »

Medior PHP developer

Functie Het team bestaat inmiddels uit zo’n 25 collega’s met specialisten op het gebied van development, data(analyse), marketing, infrastructuur en finance. Ze hebben een supermodern pand en bieden hiernaast veel vrijheid en verantwoordelijkheid. Ze doen er alles aan om jou op te gemak te stellen. Zo kun je je eigen werkplek inrichten naar persoonlijke wensen, maar gaan ze bijvoorbeeld ook jaarlijks met elkaar wintersporten en zijn er andere leuke uitjes. Als onderdeel van één van de scrumteams ga je aan de slag, samen ben je medeverantwoordelijk voor het doorontwikkelen van hun business applicatie waar het traffic team dagelijks mee werkt.

Bekijk vacature »

PHP Laravel developer

Functie omschrijving Weet jij alles van Laravel en krijg je energie van het ontwikkelen van software hiermee? Laat snel wat van je horen want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch. Jouw taken zullen bestaan uit: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Documentatie schrijven over applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein softwarebedrijf. Er werken ongeveer 15 medewerkers, verdeeld in meerdere teams, zoals back-end en front-end development, projectmanagement

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

Bekijk vacature »

Back-End Developer in Laravel / PHP

Functie omschrijving Wij zijn op zoek naar een Medior PHP Laravel Developer voor een gaaf bedrijf in de omgeving van Amsterdam! Voor een enthousiast team die zich graag bezig houdt met softwareontwikkeling zijn wij op zoek naar versterking. Je werkt in een klein ontwikkelteam en bent zeer betrokken bij alle aspecten van de softwareoplossingen. Van het ontwerpen tot de oplevering. Binnen deze functie ga je aan de slag met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je krijgt veel te maken met koppelingen naar systemen en de verzoeken van de klant. Je komt terecht in een team, waarbij

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Front-end Developer

Dit ga je doen Het onderhouden, ontwikkelen en testen van front-end software van diverse klant- en medewerkersapplicaties; Het ontwikkelen van maatwerk front-end oplossingen in Vue.js en participeren in een scrumteam; Mede-verantwoordelijk voor het begeleiden en coachen van drie junior front-end developers; Verantwoordelijk voor code-reviews en het opstellen van de juiste documentatie zoals userstories en API ontwerp; Participeren in diverse projecten t.b.v. optimalisatie van diverse applicaties; Het opzetten van API koppelingen met externe applicaties. Hier ga je werken Betreffende organisatie is gevestigd in de regio van Swifterbant en is al ruim 20 jaar lang bedreven in het ontwikkelen en aanbieden van

Bekijk vacature »

C# developer

Functie omschrijving We are looking for a dutch native speaker Ik ben op zoek naar een back-end developer, die met name kennis & ervaring heeft van de programmeertaal C#. Jij gaat aan de slag bij een topspeler in de logistieke sector, die zich behalve met logistiek, ook bezig houdt met softwareontwikkeling. Welke taken komen hierbij kijken? Je gaat desktop- en webapplicaties onderhouden en optimaliseren, waarin je werkt met o.a. C#, ASP.NET, SQL Server en T-SQL. Je hebt regelmatig klantcontact om de wensen in kaart te brengen en te evalueren over de huidige draaiende applicaties. Je implementeert nieuwe functionaliteiten toe aan

Bekijk vacature »

Java developer Zorgsysteem

Dit ga je doen Werken aan het eigen gebouwde zorgsysteem; Verbeteringen maken en toepassen binnen de applicatie; Jij gaat werken aan de Back-end van de applicatie en sporadisch werk je mee aan de Front-end; Samenwerken met andere teams voor een optimaal resultaat; Jij kan 'clean' werken en high quality code schrijven; Jij werkt resultaatgericht. Hier ga je werken De organisatie houdt zich bezig met diverse applicaties met betrekking tot zorgregistratie. Dankzij hun systeem komt alle informatie, omtrent de zorg van een patiënt, op een overzichtelijke en toegankelijke manier samen in één systeem te staan. Op deze manier is deze informatie

Bekijk vacature »

Junior Front-End Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale oplossingen van Coolblue. Wat doe je als Junior Front-End Developer bij Coolblue? Als Junior Front-End Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen. Op dat moment komt je wil om te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te maken. Je sterk analytisch vermogen komt dan goed van pas! Ook Junior Front-End Developer worden bij Coolblue?

Bekijk vacature »

C# .NET Software Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen software development waar je gaat werken voor een jong en flexibel bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Software Developer met ervaring binnen C# .NET die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! In deze functie ga jij je bezighouden met: Meedenken in oplossingsrichtingen; Werken aan de architectuur; Het verbeteren van functionaliteiten binnen het dataplatform; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je aan de

Bekijk vacature »

04/09/2024 11:08:37
Quote Anchor link
Bij het uploaden van een binair bestand is het een vereiste om de inhoud te valideren, maar ook om het te controleren op eventuele virussen.

Ik werk met Linux, daar heb je ClamAV, met een daemon "clamd" die je via een socket of TCP/IP kunt aanspreken.
De enige library die ik heb kunnen vinden is php-clamav maar die heeft slechts support tot en met PHP 5.5, en niet meer voor 8.3.
Via de exec() gaat veel te traag omdat het seconden duurt voordat de virusscanner is geinitialiseerd. Dat duurt te lang als je meerdere uploads hebt.

Hoe dit het beste aan te pakken?
 
PHP hulp

PHP hulp

03/11/2024 21:21:38
 
- Ariën  -
Beheerder

- Ariën -

04/09/2024 11:26:34
Quote Anchor link
Ik denk dat je een soort van wachtrij moet maken, en de bestanden pas vrij moet geven zodra ze gescand zijn.
In de database geef je dan met een flag aan, dat ze gescand en goedgekeurd zijn.

Misschien helpt het om bij meerdere uploads alles tijdelijk op de server in te zippen en dat weer te scannen? Uiteindelijk hoeft er dan maar één proces van clamav aangeroepen te worden. Maar ik zeg altijd: Meten is weten.
Gewijzigd op 04/09/2024 11:27:13 door - Ariën -
 

04/09/2024 11:41:32
Quote Anchor link
Een wachtrij of zippen is weinig praktisch, liever heb ik dat je via een een UNIX-socket of loopback adapter de daemon opdracht kan geven om de bits en bytes meteen te scannen. Dat zou niet al te ingewikkeld moeten zijn, waardoor je zou verwachten dat er toch al iets voor moet zijn.
Ik heb nog even verder gezocht en kwam tegen phpMussel (ik kan niets met Composer), Cloudmersive (is dat via een API?) en Quahog. Die laatste ziet er het meest simpel uit.
Toch maar eens kijken of daar iets tussen zit?
 
- Ariën  -
Beheerder

- Ariën -

04/09/2024 12:03:14
Quote Anchor link
Maar hoelang duurt het scannen van alle bestanden volgens jou me ClamAV? Ik ben benieuwd of je dat al gemeten hebt?
Maar hoezo zou een wachtrij weinig praktisch zijn? Je wilt geen virussen verspreiden zolang iets nog niet gescand is.
 

04/09/2024 12:13:01
Quote Anchor link
Het duurt 16.4 seconden om clamscan te starten op mijn i9 (13e generatie) laptop met 20 cores en 64GB RAM.
Dat is echt een beetje te veel.

De daemon draait al dus het zou makkelijker zijn om die opdracht te kunnen geven om enkele bestandjes te scannen die in de /tmp worden geupload.

Ik ben even aan het kijken met de code van Quahog en deze SO thread om te kijken of ik er iets simpelers van kan maken.
 
Ward van der Put
Moderator

Ward van der Put

04/09/2024 12:57:36
Quote Anchor link
Om wat voor soort "binaire bestanden" gaat het?
 
- Ariën  -
Beheerder

- Ariën -

04/09/2024 13:17:10
Quote Anchor link
Hoe roep je die clam aan in de CLI?
 

04/09/2024 13:29:15
Quote Anchor link
Ward van der Put op 04/09/2024 12:57:36:
Om wat voor soort "binaire bestanden" gaat het?

Bestanden uit de /tmp map die via HTTP worden geupload door gewone gebruikers en waarvan de metadata in $_FILES staat. Deze bestanden worden via move_uploaded_file() verplaatst naar een 'veilige' map of als BYTEA naar de database geschreven. Vervolgens kunnen de bestanden door andere gebruikers worden gedownload. Wat ik zou willen is dat je voorkomt dat virussen zich via deze weg verspreiden.

- Ariën - op 04/09/2024 13:17:10:
Hoe roep je die clam aan in de CLI?

Met 'clamscan -r testbestand'

Toevoeging op 04/09/2024 14:04:41:

Ik heb het werkend gekregen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php

declare (strict_types=1);

// Gebaseerd op
// https://github.com/jonjomckay/quahog/tree/master
// https://github.com/clue/socket-raw/tree/1.x


const TIMEOUT = 30;
const CLAMD_SOCKET = '/var/run/clamav/clamd.ctl';
$filename = "/tmp/test.txt";

// Maak socket met timeout in blocking I/O
$socket = @socket_create(AF_UNIX, SOCK_STREAM, 0);
if ($socket === false) { die("Kan geen socket maken"); }
$r = NULL;
$w = [$socket];
$e = NULL;
@
socket_select($r, $w, $e, TIMEOUT, 0);
if (@socket_get_option($socket, SOL_SOCKET, SO_ERROR) === false) {
  die("Kan timeout niet instellen op socket");
}

if (! socket_set_block($socket)) { die("Geen blocking I/O voor socket"); }
if (! @socket_connect($socket, CLAMD_SOCKET)) { die("Kan niet verbinden met ClamAV"); }

// Geef opdracht bestand te scannen
$msg = "SCAN " . $filename;
$buffer = 'n' . $msg . "\n";
@
socket_send($socket, $buffer, strlen($buffer), MSG_DONTROUTE);

// Lees resultaat
$result = null;
do {
  $r = [$socket];
  $n = NULL;
  if (! @socket_select($r, $n, $n, TIMEOUT)) {
    print "Timeout";
    break;
  }

  $data = @socket_read($socket, 4096, PHP_NORMAL_READ);
  if ($data === false) { die("Kan niet lezen van socket"); }
  if ($data === "") { break; }  // geen data meer om te lezen
  $result .= $data;
  if (strcmp(substr($result, -1), "\n") == 0) { break; }
}
while (true);
socket_close($socket);
$result = trim($result);

// Interpreteer resultaat
header("Content-type: text/plain");
if (str_ends_with($result, "OK")) {
  print "Bestand \"" . $filename . "\" is schoon";
}
else if (str_ends_with($result, "FOUND")) {
  print "Bestand \"" . $filename . "\" bevat een virus";
}
else if (str_ends_with($result, "ERROR")) {
  print "Fout bij scannen, zijn de leesrechten goed ingesteld?";
}
else {
  print "Onbekende fout";
}


?>

Met het testbestand roept ClamAV ook dat er een virus is gevonden, test.txt moet dan deze string hebben:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Zie ook https://en.wikipedia.org/wiki/EICAR_test_file
Gewijzigd op 04/09/2024 16:26:10 door
 
Ward van der Put
Moderator

Ward van der Put

06/09/2024 12:06:20
Quote Anchor link
Toch gaaf wat je allemaal met PHP kunt doen. ;-)

https://www.youtube.com/watch?v=WsnHWxO7Krw
 

06/09/2024 16:18:15
Quote Anchor link
Ward van der Put op 06/09/2024 12:06:20:
Toch gaaf wat je allemaal met PHP kunt doen. ;-)

https://www.youtube.com/watch?v=WsnHWxO7Krw

Het is dat je die knipogende smiley er achter zet, anders zou ik nog geneigd zijn om inhoudelijk te reageren.

Maar die video vraagt gewoon om een reactie (ook al zit de criticus er bij). =]

Ik denk niet dat die video een goede promotie is van PHP, een (ex-)accountant vertelt over hoe gaaf PHP wel is en wat je er mee kunt doen. En natuurlijk is het zo dat je in principe van alles in PHP kunt doen, maar de vraag is niet OF het iets kan, maar HOE GOED:

- types zijn nog steeds niet echt handig in PHP, als je een int hebt en je increment die te vaak wordt het vanzelf een float. En functies zijn hoofdletterongevoelig, in tegenstelling tot variabelen. De volgorde waarin je variabelen in standaardfuncties zet is nog steeds verwarrend. En je kunt nog steeds functies callen met meer variabelen dan er in passen.
Neem nou deze code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php function x() : int { return PHP_INT_MAX + 1; } ?>

Waarom pas een error bij het aanroepen van de functie? PHP kan toch meteen weten dat het fout gaat?

- traits zijn leuk, en gelukkig zijn er tools in IDE's die je helpen enkele fouten te voorkomen. Maar traits zijn lang niet zo krachtig als in... een andere taal. Je kunt ze in PHP helaas niet gebruiken als types van een functieargument. Hoe ondersteunt PHP dan compositie? Alleen maar met traits als een geautomatiseerde copy-paste?

- syntax suger als array destructioning en anonymous classes, generators en closures en de coalesce operator en named arguments scheelt ietsje voor de snelheid van programmeren, maar niet genoeg om daar nou een punt van te maken. Code wordt zelfs gevoeliger voor menselijke fouten door de null chaining operator, het feit dat && iets anders betekent dan 'and' etc.
Het zou handiger zijn als ze PHP beter te volgen maken, zoals geen haakjes bij elk if-statement. Daar heeft iedereen meteen iets aan.
In plaats daarvan komen ze met extra rommel als dat je bij een contructor een type "public readonly" kan noemen. Waarom niet gewoon "protected"? Maar ze voegen die onzin liever toe om hip over te komen.

- 'match' heeft potentie, maar PHP helpt je nog steeds niet met het afvangen van fouten. Deze code geeft gek genoeg geen error:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
enum MyFirstEnum { case A; case B;
  function
print() { return match ($this) { Self::A => 'A' }; }
}
?>

Je zou toch verwachten dat PHP met minimaal een warning aangeeft dat ik Self::B ben vergeten?

- Wat wel een echte verbetering is, is dat je variabelen kan annoteren dat de gegevens niet gelogd worden. Al heb je daar weinig aan als de webserver ook je wachtwoord opslaat in de HTTP-logging. Of als je je wachtwoord doorstuurt naar de database om het daar pas te decrypten.

Alle echte grote problemen die PHP heeft zijn nog steeds niet opgelost: de afhankelijkheid van configuratie of en hoe iets überhaupt werkt, het gemak waarmee je inefficiënte programma's die slecht te onderhouden zijn maakt en dat er geen duidelijke errors zijn wanneer er dingen niet goed werken terwijl je er van uit gaat dat ze dat wel zouden doen.

Het maakt dat PHP nog steeds complexiteit verbergt waardoor je vaak niet zeker bent of je code goed is, terwijl wel (in een aantal gevallen) lijkt te werken.
En het andere punt, omdat PHP nog verre van perfect is, is zelfs een minor update van 8.2 naar 8.3 weer een major update met weer opnieuw breaking changes. Elke verbetering van PHP gaat elk jaar weer ten koste van je eigengeschreven code!
Mocht je afhankelijk zijn van een library van iemand die niet werkt met de nieuwe PHP, dan zit je met de gebakken peren. En je mag zowieso je eigen codebase weer nalopen (of zelfs unit-tests schrijven of een int een int blijft, en dat soort tijd die je beter aan het leren kennen van serieuzer gereedschap had kunnen besteden.)


In ieder geval had ik in Rust zo een library die meteen met ClamAV scant. En die library blijft het gegarandeerd doen, ook over 10 jaar.
Dat soort dingen en bovengenoemde is het verschil met andere talen. En de reden waarom ik de resterende sites op termijn ook over ga zetten naar Rust.
Tenzij PHP bijdraait. Maar dat zie ik niet snel gebeuren, daarvoor moet er te veel veranderen. En hoe meer onzin er wordt toegevoegd aan PHP hoe lastiger het wordt om dat te verbeteren.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.