Γλωσσάρι: παράμετροι, parsers και path traversal — DedSec Project
Γλωσσάρι: παράμετροι, parsers και path traversal Parameter Ακριβής σημασία Όνομα στο function definition· argument είναι η τιμή του caller. Positional και keyword-only parameters αποτελούν…
Parameter
Ακριβής σημασία
Όνομα στο function definition· argument είναι η τιμή του caller. Positional και keyword-only parameters αποτελούν διαφορετικά compatibility contracts.
Πείραμα αναφοράς
def power(base, *, exponent=2): return base**exponent
assert power(3)==9
assert power(3,exponent=3)==27
Διερεύνηση ορίου
Δοκίμασε power(3,3), δες TypeError και πρόσθεσε validation σε exponent με σαφή πολιτική αρνητικών.
Ανεξάρτητος έλεγχος
Για Παράμετρος, γράψε την αναμενόμενη έξοδο πριν από εκτέλεση. Άλλαξε μία σημαντική παραδοχή και βρες αν το πρόβλημα ανήκει σε caller, implementation ή περιβάλλον.
Parser
Ακριβής σημασία
Λογισμικό που μετατρέπει κείμενο ή tokens σε δομημένα δεδομένα σύμφωνα με grammar. Το σωστό parsing δεν αποδεικνύει έγκυρα business values.
Πείραμα αναφοράς
import csv,io
r=list(csv.DictReader(io.StringIO('name,score\n"Ada, Jr",4\n')))
assert r[0]['name']=='Ada, Jr'
Διερεύνηση ορίου
Σύγκρινε με split(',') και εξήγησε γιατί quoted comma σπάει την αφελή λύση. Έλεγξε μετά τα scores.
Ανεξάρτητος έλεγχος
Για Αναλυτής σύνταξης, γράψε την αναμενόμενη έξοδο πριν από εκτέλεση. Άλλαξε μία σημαντική παραδοχή και βρες αν το πρόβλημα ανήκει σε caller, implementation ή περιβάλλον.
Path traversal
Ακριβής σημασία
Μη έμπιστο path διαφεύγει από directory μέσω ../, absolute path ή symlink. Έλεγχος string prefix μπορεί να ξεγελαστεί από sibling ονόματα.
Πείραμα αναφοράς
from pathlib import Path
root=Path('/tmp/workspace').resolve()
target=(root/'../outside.txt').resolve()
assert root not in target.parents
Διερεύνηση ορίου
Φτιάξε προσωρινό directory και escaping symlink, και εντόπισε το TOCTOU gap μεταξύ resolve/open.
Ανεξάρτητος έλεγχος
Για Διαφυγή διαδρομής, γράψε την αναμενόμενη έξοδο πριν από εκτέλεση. Άλλαξε μία σημαντική παραδοχή και βρες αν το πρόβλημα ανήκει σε caller, implementation ή περιβάλλον.
Polymorphism
Ακριβής σημασία
Κοινό interface υποστηρίζει διαφορετικές υλοποιήσεις. Η υποκατάσταση πρέπει να διατηρεί τη συμπεριφορά που περιμένει ο caller, όχι μόνο ίδιο όνομα method.
Πείραμα αναφοράς
def area(shape): return shape.area()
class Square:
def area(self): return 9
assert area(Square())==9
Διερεύνηση ορίου
Υλοποίησε Circle και σύγκρινε με Square μέσω κοινού area API. Δοκίμασε broken shape που επιστρέφει string αντί αριθμού.
Ανεξάρτητος έλεγχος
Για Πολυμορφισμός, γράψε την αναμενόμενη έξοδο πριν από εκτέλεση. Άλλαξε μία σημαντική παραδοχή και βρες αν το πρόβλημα ανήκει σε caller, implementation ή περιβάλλον.
Process
Ακριβής σημασία
Εκτελούμενη μονάδα του OS με address space και resources. Διαφορετικά processes επικοινωνούν μέσω IPC, αρχείων ή sockets, σε αντίθεση με threads που μοιράζονται address space.
Πείραμα αναφοράς
import os
pid=os.getpid()
assert isinstance(pid,int) and pid>0
Διερεύνηση ορίου
Εκκίνησε harmless child με subprocess.run και argument list, δες exit code και ξεχώρισε child process από shell command.
Ανεξάρτητος έλεγχος
Για Διεργασία, γράψε την αναμενόμενη έξοδο πριν από εκτέλεση. Άλλαξε μία σημαντική παραδοχή και βρες αν το πρόβλημα ανήκει σε caller, implementation ή περιβάλλον.