10. marts 2001 - 20:05Der er
34 kommentarer og 2 løsninger
Hvordan hackersikres en apache/mySQL/PHP-server???
Hej,
Hvis man ville opbygge en internetbutik, der er så sikker som en bank, omkring en apache/mySQL-løsning,
a. Hvad skal man så gøre for at gøre den 99.9% sikker?
b. Er der noget (gratis?) software som er særlig godt at kombinere med apache/mySQL, f.eks. en bestemt firewall? (Gerne produktnavne)?
c. Hvad er sikrest at bruge som Operativsystem f.eks. Linux eller Windows?
d. Findes der en ekstra sikker udgave af Apache og MySQL, hvor der er lukket ned for f.eks. ftp, således at al kommunikation med brugeren kun kan ske ved \'normal\' download af siderne i HTML?
Grundkrav til serveren:
1. Serveren skal automatisk håndtere betaling vha. kreditkort (visa/mastercard) og varetage tilbagebetaling til kunders konti, hvis de fortryder køb eller der ikke kan leveres alligevel.
2. Serveren skal automatisk håndtere kundernes konti (indsættelse af penge og nedskrivning af konto ved køb)
3. Kunderne skal kunne få adgang til den fra en alm. browser f.eks. Netscape.
Kort sagt der må ikke komme hackere ind der kan pille ved kundeoplysninger,kode, konfiguration m.m.
Well, det du vil have, er det umulige... INTET er sikkert på Internettet, INTET... Alt kan lade sig gøre, der er INGEN begrænsning! INGEN!
Men her et par tips, som du kan bruge til at gøre dit system sikkere!
Operativsystem: En Linux/UNIX klon, evt. BSD, da den er mest sikker! Web-server: Brug Apache, og benyt SSL eller HTTPS frem for HTTP, til at nå siderne fra browseren. Firewall: Benyt IPCHAINS, det er en gratis firewall til Linux/UNIX, som en nem at sætte op men ret sikker, da man selv skrive hvad den skal og ikke skal. Kan f.eks. sættes op til at være en MOST SECURE firewall...
Mht. håndtering af visa/master/dankort oplysninger, så benyt noget fra et \"godkendt\" firma, og ikke noget \"free creditcard gateway\" - det er dels mere pålideligt for kunden og mere sikkert for dig selv, med noget som koster penge der...
I øvrigt, hvis man vil satse på sikkerhed, skal man ikke tænke i \"free stuff\" baner, min mening!
Rart med et svar. Jeg venter lige lidt med at slippe resten pointene for at se om I er flere som skal dele dem, men mange tak! :) Du siger, at vi ikke skal tænke i freeware. Hvad er de kommercielle alternativer?
BSD fås i en gratis version, FreeBSD - den er ok! IPCHAINS er gratis, Apache er gratis, mySQL er gratis, SSL/HTTPS er gratis, så helt havde jeg jo ikke ret... Disse produkter er kanone, og der er mange andre som bruger dem... BRUG DEM, det er nok de bedste!
Men bare husk på, INTET er sikkert i dag, ALT er muligt...
Jeg regner med, at du må have tjekket op på det siden at du har ændret mening. Jeg kunne heller ikke ummiddelbart forstå, hvorfor at det ikke skulle være godt nok. Et typisk alternativ ville jo være MicrosoftSQLserver og jeg nægter at tro på, at den ikke også skulle være fuld af huller.
Omvendt så har jeg lige læst, hvordan en hackergruppe gik ind på apache.org og ændrede deres hjemmeside og fik rootaccess på deres apacheserver. Men igen, der er intet der er 100% sikkert, Når selv Pentagon ikke kan holde alle ude.
Well, man skal også huske på, at oftest er det menniskelige fejl, som er afgørene for om en hacker kan komme ind... Der er MANGE som ikke opdatere deres servere, med de patches som der kommer osv...
Jeg ville absolut ikke vælge et produkt som mySQL til et seriøst projekt på *NIX platform! Det minder mig om at bruge access til et stort projekt på en Ms Platform...FØJ! Til linux er jeg blevet anbefalet PostGreSQL eller Oracle (nok lidt mere Unix, men hvad fanden) og til MS er der kun en god database server, og det er den svinedyre, men hurtige db Ms SQLServer 2000
Stored Procedures When you create an application with Microsoft® SQL Server™, the Transact-SQL programming language is the primary programming interface between your applications and the SQL Server database. When you use Transact-SQL programs, two methods are available for storing and executing the programs. You can store the programs locally and create applications that send the commands to SQL Server and process the results, or you can store the programs as stored procedures in SQL Server and create applications that execute the stored procedures and process the results.
Stored procedures in SQL Server are similar to procedures in other programming languages in that they can:
Accept input parameters and return multiple values in the form of output parameters to the calling procedure or batch. Contain programming statements that perform operations in the database, including calling other procedures. Return a status value to a calling procedure or batch to indicate success or failure (and the reason for failure). You can use the Transact-SQL EXECUTE statement to run a stored procedure. Stored procedures are different from functions in that they do not return values in place of their names and they cannot be used directly in an expression.
The benefits of using stored procedures in SQL Server rather than Transact-SQL programs stored locally on client computers are:
They allow modular programming. You can create the procedure once, store it in the database, and call it any number of times in your program. Stored procedures can be created by a person who specializes in database programming, and they can be modified independently of the program source code.
They allow faster execution. If the operation requires a large amount of Transact-SQL code or is performed repetitively, stored procedures can be faster than batches of Transact-SQL code. They are parsed and optimized when they are created, and an in-memory version of the procedure can be used after the procedure is executed the first time. Transact-SQL statements repeatedly sent from the client each time they run are compiled and optimized every time they are executed by SQL Server.
They can reduce network traffic. An operation requiring hundreds of lines of Transact-SQL code can be performed through a single statement that executes the code in a procedure, rather than by sending hundreds of lines of code over the network.
They can be used as a security mechanism. Users can be granted permission to execute a stored procedure even if they do not have permission to execute the procedure’s statements directly.
A SQL Server stored procedure is created with the Transact-SQL CREATE PROCEDURE statement and can be modified with the ALTER PROCEDURE statement. The stored procedure definition contains two primary components: the specification of the procedure name and its parameters, and the body of the procedure, which contains Transact-SQL statements that perform the procedure’s operations.
(c) 1988-98 Microsoft Corporation. All Rights Reserved.
Hej Portal! Tak fordi du blander dig i diskussionen. Dit svar forstår jeg som, kort udtrykt: MS-SQL-serveren er bedre fordi at den understøtter stored procedures (SP). Hvad er forskellen på SP og funktioner i mySQL?
Såvidt jeg kan se ud fra dine oplysninger så er den største fordel, at koden bliver compilet on-the-fly på MS-SQL. Hvilket er rigtig fedt.
Da mySQL er gratis og MS-SQL hamrende dyr, så kan jeg forestille mig at det er billigere at bruge \'mange\' penge på en hurtig PC med mySQL end at købe MS-SQL (alle penge på hardware og ingen på software) og så køre det på en langsommere pc (mange penge på software&få på hardware).
Gad vide om det ikke giver en bedre performance pr. krone?
Jeg har set lidt på PostGreSQL, da softwaren SKAL være gratis (Ingen penge har jeg nok af). Oracle og MS-SQL er helt udelukket af samme grund. Det som jeg spekulerer mest over er, om den er ligeså nem at integrere med PHP?
Jeg har ikke glemt at uddele point, siger det lige en gang til (sidste gang), men andre skal have mulighed for også at komme med indlæg, inden at vi lukker.
Hej Lojman. Jeg deler din religion *G*, men kan ikke vurdere om mySQL teknisk set er MS-SQL underlegen.
Der er forresten en ting jeg ikke helt forstår. Hvis jeg har en Apache/MysQL/PHP løsning kørende og der er X, f.eks. 100 brugere, der er connected til serveren på samme tid. Sætter serveren dem så i en form for LILO-kø altså betjener dem efter den rækkefølge som deres requests er kommet ind i?
LILO-kø? Linux Loader-kø? Hvad mener du? Serveren bootes jo ikke hver gang der er nogle som spørger efter den?!?!?
Men du har jo et hvis antal connections, i apache, klar til at tage imod nye \"kunder\" på sitet... hvis det er det du mener! Det kan man selv sætte op, hvis det antal som er default ikke er nok!
LILO=Last in last out. Med andre ord en kø ligesom i supermarkedet. Den kunde/bruger som vil betjenes på vente på det bliver dennes tur til at blive betjent af kassemanden/serveren (Øj, hvor pædagogisk *G*)
Hvis 100 brugere på ca. samme tid connecter til serveren. Bliver de så sat i en kø og betjent en af gangen eller kan der køre flere processer på samme tid? Det sidste giver mulighed for at en proces vil forsøge at f.eks. skrive til en record, mens en anden proces prøver at læse fra denne på nøjagtig samme tid.
Jeg vil gerne vide dette, så jeg ved om der kan opstå samtidighedsproblemer.
Hvis man tjekker på TPC (tpc.org tror jeg nok, der hvor DB Servere bliver testet) - Ser man ingen MySQL da den simpelthen ikke lever op til kravene, men man ser MsSQL på en klar Førsteplads - Så underlegen er MSSQL næppe!
Tja, hvad kan jeg sige... Se under \"Who We Are\", MS er med, så DERFOR kan jeg ikke have tiltro til noget af det de skriver på sitet. Hvis sådan nogle test skal kunne tages seriøse, så SKAL de komme fra nogle uafhænige nogle, ellers kan det være snyd. Ligesom det har været med W2K Vs. Linux og tidligere MSSQL Vs, mySQL...
NEJ! Men dem som direkte er sponsoreret af MS, kan man da ikke have tiltro til - det er LOGISK! Det samme vil være hvis RedHat testede RedHat Vs W2K, så ville den, i mine øjne, heller ikke holde en meter!
Må give Lojman ret. Dem som står bag tpc.org er kun kommercielle firmaer endda af de dyre af slagsen (MS, IBM, ORACLE, SUN m.m.). Hvem tror på at disse firmaer vil konstruere en test som udpeger en GRATIS konkurrent som ikke bare billigere, men også bedre? Det ville være det rene selvmord. Gad vide, hvad tpc har \'glemt\' at teste på? Hvad med performance pr. krone? Eller hvad, hvis man nu f.eks. anvender pengene der skal bruges til software på hurtigere hardware i stedet og dermed måske får mySQL til at performe bedre end ms-sql for det samme budget?
Hej Portal, Jeg var inde på tpc.org. Kan du give en præcis reference/link/citat, hvor det angives, hvorfor mySQL/PostGreSQL ikke opfylder betingelserne for at være en database? Eller bare, hvor kravene til deltagende databaser står? Såvidt jeg kan se, så sammenlignes der kun hardware/databaser fra virksomheder som betaler 9500$ til tpc årligt for at de skal benchmarke deres og KUN deres produkter. Mon årsagen ikke snarere skyldes at mySQL og andre gratis produkter ikke betaler for en test og derfor ikke er med?
Og så selvfølgelig at de andre producenter ikke har lyst til at tage dem med. For selv om mySQL kun performede middelmådigt, så ville de 1. Blive blåstemplet fordi de sammenlignes med \'det fine selskab\' og 2. Score en god bid af markedet, fordi ingen andre kan give samme gode pengeøkonomi.
Jeg har fået atvide af en fra 2600.dk, som er rimelig hardcore til Linux, at grunden til at MySQL ikke var med er fordi de ikke understøtter Stored Procedures, hvorfor PostGreSQL ikke er med ved jeg ikke, for den understøtter Stored Procedures!
Jeg vil prøve at finde de ting databasen skal understøtte for at komme med!
Jeg har ikke lige kunne finde det på siden, den er fandme uoverskuelig, så jeg kontakter lige TPC og MySQL for at opklare vores lille mysterium!
/The Portal
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.