[ Príspevkov: 39 ] 1, 2
AutorSpráva
Offline

Užívateľ
Užívateľ
Veľky projekt

Registrovaný: 31.05.09
Prihlásený: 02.06.17
Príspevky: 562
Témy: 37 | 37
Bydlisko: BegyBen
NapísalOffline : 22.08.2009 11:09 | Veľky projekt

to ti urcite nebude stacit, vacsinu vstupov budes musiet osetrit na mieru


Offline

Čestný člen
Čestný člen
Veľky projekt

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 22.08.2009 11:15 | Veľky projekt

Flety píše:
predpokladám, že na ošetrenie by mala stačiť stenleyho funkcia
To mozes na ten velky projekt rovno zabudnut. Vsetko, co robi ta funkcia, je v podstate htmlspecialchars. Ak robis s databazou, ovela dolezitejsie bude osetrenie backslashov a apostrofov (tie apostrofy sa daju vyriesit tiez pomocou htmlspecialchars, ale treba pridat 2.parameter).


Offline

Správca fóra
Správca fóra
Veľky projekt

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 22.08.2009 11:41 | Veľky projekt

ta funkcia vznikla preto, aby nebolo treba osetrovat kazdu jednu premennu zvlast, teda aby sa tato cinnost zjednodusila a zautomatizovala... ak si vsimnes, uz v jej nadpise je uvedene, ze sa jedna o zakladne osetrenie a teda je potrebne, aby si si ju prisposobil, tj pridal dalsie osetrenia vstupov, ktore povazujes za nevyhnutne v tvojom projekte...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Veľky projekt

Registrovaný: 31.05.09
Prihlásený: 02.06.17
Príspevky: 562
Témy: 37 | 37
Bydlisko: BegyBen
NapísalOffline : 22.08.2009 11:56 | Veľky projekt

Na stenleyho funkciu sa nespoliehaj (ani na ziadnu inu), ktoru najdes na nete a je ku nej napisane ze osetrenie vsupov. Sam musis pochopit ake ti hrozia rizika (SQL injction, XSS, nulovy bajt atd...) a na zaklade toho konat.
Ak mas napr. 3x radio kde mas value napr. S, M, L tak by si mal spravit funkciu(metodu v class) na oserenie, ktora takyto vstup ocakava a vracia TRUE or FALSE. Teda robit veci na mieru a nedoverovat uzivatelovi ;)


Offline

Správca fóra
Správca fóra
Veľky projekt

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 22.08.2009 12:29 | Veľky projekt

zas az tak namieru by som to nerobil, nie je totiz efektivne, aby si na kazdy vstup mal zvlast metodu/funkciu (viem, ze si to tak asi nemyslel, ale nedalo mi)... staci jedna, ale poriadne prepracovana, pre zaciatok by jej stacilo predavat hodnotu vstupu, pole dovolenych hodnot (ak su konkretne stanovene) pripadne regularny vyraz , triedu vstupu (meno,cislo,email,sql hodnota...), osetrenie nad ramec zakladneho osetrenia a pod...


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Skúsený užívateľ
Skúsený užívateľ
Veľky projekt

Registrovaný: 29.10.07
Prihlásený: 12.06.17
Príspevky: 1408
Témy: 28 | 28
Bydlisko: Bratislava
Vek: 36
NapísalOffline : 22.08.2009 18:54 | Veľky projekt

Podla mna uplne staci nieco taketo v kombinacii s prepared statement:
http://www.phpclasses.org/browse/file/9402.html


_________________
PC: OS: Windows 10 (64bit) CPU: INTEL Core i5-4440 GPU: ASUS ATI R9280X RAM: Kingston 8GB DDR3 1600MHz MB: MSI B85-G43 Gaming HDD: Seagate 1TB HDD Barracuda SSD: SAMSUNG 120GB HDD 840 EVO CASE: COOLERMASTER N400
Mobil: OS: Android 4.4.2 Model: LG G2 D802 16GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 22.08.2009 21:05 | Veľky projekt

Ok takže skúsim sa vyjadriť hoci nerobím vo veľkých firmách s väčšími projektami som sa stretol.

Čítal som, že každý kód, aby bol dobre čítateľný a prehľadný by mal byť na jednu obrazovku. S časti s týmto súhlasím teda - tvoj kód má byť jednoduchý, prehľadný, ľahko udržiavateľný, bezpečný.

Ako to dostiahnuť. Tuším GoodWill tu na druhej strane vravel ako dokumentovať. Súhlasím iba s časti. V radách sa trošičku odvolávam na knihu Java 6, od tvorcov Java. V podstate sú to rady ktoré nájdeš vo všetkých väčších projektoch, a ja som na ne (bohužiaľ) prišiel sám :D

Premenné a poznámky
Používať vhodné premenné. Premenné typu: $u, $g, $a nepripadajú do úvahy. Názov premennej má byť stručný ale výstižný. Pri použití dvoch slov sa každé ďalšie slovo začína veľkým písmenom. Pri používaní konštant sa používajú veľké písmená, amiesto medzier sú potržníky:
Kód:
$meno = "Denis";
$pocetPrvkov = mysql_...;
$MAX_PRVKOV = 6;

Mne sa ešte osvedčilo používať "predpony", čím sa zprehľadnilo zopár vecí:
Kód:
$q_user = $DB -> Query("SELECT * FROM user"); //query
$a_user = $DB -> FetchArray($q_user); //array


Tým, že budeš mať takto zvolené názvy premien, metód, funkcií vytváraš samodokumentáciu. Určite nedokumentuj každý krok, lebo to má kontraproduktívny účinok:

Kód:
$prveCislo = 1; // priradil som hodnotu pre prvé číslo výpočtu
$druheCislo = 3; // priradil som hodnotu pre druhé číslo výpočtu
if($prveCislo > 0 && $druheCislo > 0) { // ak rátame s reálnymi číslami
$vysledok = $prveCislo * $druheCislo; // výsledok je násobok oboch čísel
echo $vysledok; //vypisem výsledok
} //koniec podmienky
else { // ak nerátame s reálnymi číslami
echo "Nezadali ste reálne čísla"; //vypíšeme chybovú hlášku
} // koniec else podmienky


Dokumentuj hlavne dôležité časti aplikácie, hlavne aby si rýchlo našiel čo hľadáš a aby si sa rýchlo dostal do obrazu. Teda ak zvolíš vhodné názvy netreba ti robiť dokumentáciu načo tá-daná funkcia slúži: zmensiObrazok(), vypisAdresar(), pagination(), safety() a pod. Ak je trieda príliš obsiahla tak dokumentovať hlavne na začiatku kde zhrnieš čo robí, na čo slúži, čo obsahuje. V kóde iba jednotlivé úseky oddeliť. Ja som za to aby bolo v kóde čo najmenej komentárov, a čo najviac kvalitného kódu :)

Pokiaľ sa dá každej drobnosti venuj jeden riadok, teda nepchaj 7 vecí do jedneho riadku. Taktiež ak sa dá používaj skrátené formy:
Kód:
//NIE
$prveCislo=1;$druheCislo=3;if($prveCislo>0 && $druheCislo>0)$vysledok=$prveCislo*$druheCislo;else $vysledok="Zlé čísla";echo $vysledok;

//ANO
$prveCislo = 1;
$druheCislo = 3;
$vysledok = ($prveCislo > 0 && $druheCislo > 0) ? $prveCislo * $druheCislo : "Zlé čísla";
echo $vysledok;


Bezpečnosť
Odporúčam používať stenleyho funkciu. Slúži na základnú bezpečnosť. To znamená, že tie najväčie muchy to odstráni a teba stačí tu danú časť ošetriť podľa tej danej situácie. Uprednostňovať whitelist pred blacklistom, kde to je možné. Snažiť sa vyhnúť, zložitým nezmyselným veciam, pretože tam práve vznikajú chyby.

Taktiež ak sa Ti nejaká časť kódu opakuje v kóde/och viac krát odporúčam vytvoriť funkciu. Takteiž ako GoodWill dobre povedal, vytvoriť modularitu.

Na záver bezpečnosti by som odporúčal prečítať si nejakú dobrú knihu, osobne odporúčam: Zraniteľný kód od Cpress. Dočítaš sa v nej veľa dobrých rád a odporúčaní.

Ešte odporúčam urobiť možno aj smiešne veci, ale veľmi to ocenníš:
Písať si na paier, čo má daná vec robiť, ako sa má správať čo ma poskytovať. napr. rozanalyzovať celý projekt. Spočiatku som to robil v hlave ale zistil som, že je to oničom. Ak si spíšeš zoznam, tak potom môžeš ísť krok-po-kroku, čo máš a čo ešte nie. Teraz som našiel na oko dobre vyzerajúci článok od smashingmagazine kde to pravdepodobne vysvetľujú:
http://www.smashingmagazine.com/2009/08 ... ductivity/ (čítal som nadpisi a páčil sa mi :D)

Nakoniec by som podotkol, aby si nezabudol spracovávať chyby, výnimky, a dôležité, aby si oddeloval vrstvy: logiku od designu (, + niekto vraví databázu od logiky[zatiaľ sa mi to v reálne nepodarilo :) ]).


Viac v tomto momente na srdci nemám. Ak ma niečo napadne doplním :)


Offline

Skúsený užívateľ
Skúsený užívateľ
Veľky projekt

Registrovaný: 09.07.08
Prihlásený: 17.01.15
Príspevky: 1586
Témy: 96 | 96
NapísalOffline : 23.08.2009 18:34 | Veľky projekt

Tominator, na prvej strane som spomínal coding standards pre zend. Pozri si to, tam je riešené všetko vrátane komentárov a dokumentácie.


_________________
neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 21.02.07
Prihlásený: 21.02.10
Príspevky: 3991
Témy: 96 | 96
NapísalOffline : 23.08.2009 18:45 | Veľky projekt

Je to na spomínané na druhej strane :) Zbežne som to preletel, ale mne to netreba. Tým nechcem povedať, že vedome odmietam písať pekný zrozumiteľný kód, ale myslím si, že pravidlá, ktoré používam ja, sú priateľné, a v niektorých prípadoch zhodné s tými zenďackými, o čom svedčí aj môj príspevok nad tvojím :) Teda aj môj kód je pekný a zruzumiteľný, len strikne nedodržiavam zenďacke pravidlá :)

// Rozhodne tým však neopovrhujem, a môžem z toho čerpať "inšpiráciu" :)


 [ Príspevkov: 39 ] 1, 2


Veľky projekt



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

hosting pre velky projekt

v Webhosting a servery

4

679

18.08.2010 18:05

shaggy

V tomto fóre nie sú ďalšie neprečítané témy.

Hľadá sa PHP kóder, veľký projekt

v Ponuka práce

4

856

07.07.2008 14:50

Vraell

V tomto fóre nie sú ďalšie neprečítané témy.

Projekt-BiohazarD

v Modifikácie, návody a projekty

6

1218

01.04.2006 13:44

Intelman

V tomto fóre nie sú ďalšie neprečítané témy.

projekt - model

v Ostatné

1

259

25.02.2010 14:03

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

Projekt C++

v Assembler, C, C++, Pascal, Java

4

352

23.10.2011 16:57

chrono

V tomto fóre nie sú ďalšie neprečítané témy.

projekt Aquaria

v Modifikácie, návody a projekty

11

1076

01.10.2005 13:46

To[m]aS

V tomto fóre nie sú ďalšie neprečítané témy.

Projekt IT

v Vzdelanie, štúdium, škola

4

495

15.03.2008 22:10

Lub0$

V tomto fóre nie sú ďalšie neprečítané témy.

Java-Projekt Hra

v Ponuka práce

0

240

09.05.2015 14:00

Hexicek

V tomto fóre nie sú ďalšie neprečítané témy.

Spolocny internetovy projekt

v Ponuka práce

0

703

05.05.2010 17:13

Ikwe

V tomto fóre nie sú ďalšie neprečítané témy.

Wifi siet - projekt

v Siete

1

280

19.02.2008 16:10

bruno.b

V tomto fóre nie sú ďalšie neprečítané témy.

Projekt: PC Stol

v Modifikácie, návody a projekty

19

665

22.01.2015 15:15

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

Projekt DooM 3

v Modifikácie, návody a projekty

25

2102

01.10.2005 16:44

Spirit

V tomto fóre nie sú ďalšie neprečítané témy.

MAX overclock - projekt

v Biosy a ladenie výkonu

5

613

06.05.2007 20:00

Mastros

V tomto fóre nie sú ďalšie neprečítané témy.

Projekt: Negiluv mod

v Modifikácie, návody a projekty

9

1223

01.10.2005 15:42

Spirit

V tomto fóre nie sú ďalšie neprečítané témy.

Linux dokumentačný projekt

v Operačné systémy Unix a Linux

0

298

25.06.2010 18:11

programmer

V tomto fóre nie sú ďalšie neprečítané témy.

projekt o HDD

v Pevné disky a radiče

5

412

25.09.2009 15:02

ElNorka



© 2005 - 2017 PCforum, edited by JanoF