php injection jak się ustrzec

php injection jak się ustrzec
WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Jak sie przed tym ustrzec. Nie chodzi mi o bazy danych. Trzymam dane w plikach. Przesylam formularze i parametry ?id=costam. Jesli chodzi o formularze to staram sie usuwac tagi html przed zapisem i trzymac nazwy i wartosci w cudzyslowach
Mam pliki .htaccess. Cos jeszcze??

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Trzymam dane w plikach.

Tak jak każda istniejąca nie-memory-only baza danych ;-)

Jesli chodzi o formularze to staram sie [...] trzymac nazwy i wartosci w cudzyslowach

Co to znaczy?

Mam pliki .htaccess.

W jaki sposób .htaccess zabezpiecza Cię przed atakami typu xxx injection?

Cos jeszcze?

Na pewno pomocne jest niewynajdywanie koła od nowa - jeśli (poprawnie!) korzystasz z mechanizmu szablonów (typu Twig czy Blade), jesteś w dużej mierze zabezpieczony.

Frameworki (jak Symfony czy Laravel) również dużo załatwiają za Ciebie i gwarantują pewien stopień bezpieczeństwa, np. dzięki wbudowanym mechanizmom CSRF czy zabezpieczeniami przed SQL Injection poprzez wykorzystanie query builderów, zamiast ręcznego sklejania SQLi.


WP
.htaccess to moze nie o injection ale zawsze ochroni katalog z plikami gdzie trzymam dane. Ktos jeszcze ma pomysły w jaki sposob zabezpieczyć sie ?
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Na temat odpisuj w postach;

ochroni katalog z plikami gdzie trzymam dane

Nie powinieneś trzymać prywatnych danych w publicznym katalogu - rzuć okiem, jak robi to np. Laravel.

Ktos jeszcze ma pomysły w jaki sposob zabezpieczyć sie ?

Przed czym?


edytowany 2x, ostatnio: Patryk27
WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

W takim razie gdzie trzymac pliki jak nie w katalogu. Skad kos wie czy bedzie wiedzial znal scuezke do katalogu
Przed czym? Przed wszystkim co może zrobić kuku

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

W takim razie gdzie trzymac pliki jak nie w katalogu.

  1. Przytoczyłeś tylko fragment mojego zdania, przez co straciło ono sens - napisałem: nie powinieneś trzymać prywatnych danych w PUBLICZNYM katalogu.

  2. Wspomniałem: rzuć okiem, jak robi to np. Laravel.

Przed wszystkim co może zrobić kuku

Web application security to bardzo szeroki temat - na początek wystarczy, abyś rzucił okiem na owasp top 10.


edytowany 1x, ostatnio: Patryk27
WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Jakbym jeszcze wiedzial na co mam patrzec to by bylo dobrze skoro sam nie znam tematu. Jak nie publiczny to jaki. Proste pytanie.

edytowany 1x, ostatnio: wesoly_pogrzeb
KL
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 miesięcy
  • Postów:191
1

Prywatny...?
Jak spojrzysz na strukturę, którą buduje m.in Laravel czy Yii2, to zobaczysz, że struktura wyraźnie się rozdziela na zasoby publiczne, dostępne dla użyszkodnika - pliki html, cssy itp. oraz zasoby prywatne, do których użytkownik dostępu nie ma i nie będzie wiedział, że w ogóle istnieją w danym miejscu na dysku, bo dostanie albo 403 albo 404 przy próbie wejścia.

Staraj się też czytać to co piszesz, bo robisz to strasznie chaotycznie i niełatwo jest odgadnąć co masz na myśli patrząc na poszczególne pytania czy stwierdzenia.

WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Dobrze dobrze ale skoro nikt nie zna struktury drzewa czy zwac inaczej skryptu i nie wie gdzie sa trzymane pliki to w jaki sposob to zrobi tzn dostanie sie do katalogu. Moge go tak zakopac ze sam nie bede wiedzial gdzie jest

edytowany 1x, ostatnio: wesoly_pogrzeb
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:21 minut
  • Lokalizacja:Warszawa
  • Postów:2251
0

@wesoly_pogrzeb: wiesz co to jest document/web root (mówię w kontekście serwera www)? Tak jak @Patryk27 przejrzyj jak to robi laravel, albo inny framework). Ale możę opiszę Ci to w skrócie:

  1. Serwer www wystawia folder do którego jest dostęp z zewnątrz (czyli przez url w przegladarce) - folder np "public_html"
  2. Plik index.php w tym folderze ma dostęp do nadrzędnego folderu i tego co leży obok "public_html" czyli np "application"
  3. Aplikacja ma dostęp do tych prywatnych folderów, a użytkownik z zewnątrz tylko do tego co jest w public_html.
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Podczas konfiguracji serwera (Apache / nginx) możesz wybrać katalog, gdzie znajduje się kod Twojej aplikacji - zwyczajowo jest to np. /var/www/html/my-application (z plikiem index zlokalizowanym w /var/www/html/my-application/index.php).

Jest to katalog publiczny, gdyż każdy znajdujący się w nim plik jest potencjalnie widoczny dla użytkowników (pomijając kwestię .htaccess).

Początkujący często wrzucają cały kod swojej aplikacji (wraz z konfiguracją) do tego jednego, publicznego katalogu i "zabezpieczają się" poprzez odpowiednie reguły w .htaccess, co ma parę wad - np. .htaccess może zawierać błędy i ostatecznie nie zabezpieczać wszystkiego, co powinien.

Innym, bezpieczniejszym podejściem jest podział aplikacji na część publiczną (tam, gdzie są assety, czyli pliki .js oraz .css) oraz część prywatną (tam, gdzie znajduje się główny kod aplikacji); jeśli spojrzysz sobie na przykładową aplikację w Laraverze (https://github.com/laravel/laravel) zauważysz, że składa się na nią wiele katalogów, między innymi:

  • app,
  • config,
  • public.

Serwer skonfigurowany jest tak, że wskazuje na katalog public, w którym znajduje się tylko plik index.php oraz assety - reszta kodu aplikacji jest poza katalogiem publicznym, w app.

Dzięki takiej strukturze katalogów użytkownicy nie mają w ogóle możliwości odczytać konfiguracji bądź kodu aplikacji, ponieważ znajdują się one w całości poza katalogiem publicznym.

Aplikacja sama w sobie może za to bez problemu się do plików spoza katalogu publicznego odnosić - grunt w tym, że użytkownicy wprost nie mają takiej możliwości.


edytowany 5x, ostatnio: Patryk27
KL
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 miesięcy
  • Postów:191
0

Dlatego w takich przypadkach zakładasz scenariusz pesymistyczny i zakładasz, że użytkownik wie do jakich zasobów się dostać, zamiast lecieć po linii najmniejszego oporu z uśmiechem jak małpa na widok sera.
W najprostszym przypadku odpowiednie ustawienie .htaccess już blokuje dostęp fizyczny z poziomu przeglądarki do zasobów, na które ustawisz brak dostępu, ale to nie jest wszystko, co można zrobić.
Niestety za dużo z czasów PHP nie pamiętam już na chwilę obecną, więc dokładnej pomocy nie udzielę.

Ponadto wyżej już Ci kolega Patryk podpowiedział gdzie rozpocząć poszukiwania, im więcej będziesz czytał, tym więcej odkryjesz ciekawych mechanizmów i pomysłów na dostanie się przez ludzi dokładnie tam, gdzie ich nie chcesz, toteż zachęcam do podjęcia lektury.

https://www.google.pl/search?rlz=1C1PRFI_enPL786PL786&ei=cKiDW7DZPOGDrwSqo574CA&q=securing+php+scripts+from+access&oq=securing+php+scripts+from+access&gs_l=psy-ab.3..33i22i29i30k1j33i10k1.3785.5766.0.5876.12.11.0.0.0.0.238.1494.0j5j3.8.0....0...1c.1.64.psy-ab..4.7.1354...0i22i30k1.0.iFFWeX2Z7cU

Proszę, sporo wyników będzie przydatnych.

edytowany 1x, ostatnio: Klojtex
WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Dziekuje @Patryk27 za odpowiedz ktora mnie juz naprowadzila conieco. Rozumiem ze katalog prywatny ma miec jakies chmody ? bo inaczej tego nie widze. Nie ma fizycznie mozliwosci przejscia katalog wyzej jak public_html

edytowany 1x, ostatnio: wesoly_pogrzeb
axelbest
Odpal sobie przykładowy projekt z jakiegoś frameworka to sam się przekonasz :)
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Katalog prywatny nie musi mieć żadnych specjalnych chmodów - jeśli masz następującą strukturę katalogów:

  • /var/www/my-application,
  • /var/www/my-application/app,
  • /var/www/my-application/public.

I ustawisz /var/www/my-application/public jako swój katalog publiczny (inaczej: web root, directory root), to już dzięki takiemu rozmieszczeniu katalogów użytkownicy nie będą mieć dostępu do /var/www/my-application/app (ponieważ znajduje się on poza web root).

Sugeruję, abyś odpalił jakiś serwer HTTP (Apache / nginx), przygotował taki minimalistyczny zestaw katalogów u siebie i sprawdził, jak ta magia działa ;-)


edytowany 1x, ostatnio: Patryk27
WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Czyli inaczej mowiac mam public_html a w nim plik index i dwa katalogi public i app

Popraw jesli sie myle

axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:21 minut
  • Lokalizacja:Warszawa
  • Postów:2251
0

Mylisz się - masz mieć taką strukturę
Folder z wszystkimi plikami/katalogami

  • application
    -- tutaj masz całą logikę appki, szablony itp itd,
  • public/public_html
    -- tutaj masz index.php i wszystko co jest możliwe do zassania przez usera (np css'y, js'y)

Po raz kolejny napiszę - ściągnij sobie jakiegoś frameworka i sprawdź jak to działa.

edytowany 2x, ostatnio: axelbest
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

Jeśli wrzucisz app do public_html, to nie będzie to żadne zabezpieczenie, bo - uwaga, uwaga - wrzuciłeś kod aplikacji do publicznego katalogu, tak jak brzmi nazwa ;-)

Naprawdę, nie baw się w zgadywanie, tylko odpal u siebie serwer HTTP, przygotuj strukturę katalogów tak, jak Ci poleciłem, i zobacz, jak to działa w praktyce.


WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

No ok ale juz wczesniej napisalem ze nie ma mozliwosci wyjscia z public_html i osadzic tam katalog z programem. Mam mozliwosc poprzez ftp wejsc tylko do public html i tyle

axelbest
Jak się wbijasz przez ftpa to jaka jest lista elementów jaką widzisz na samym początku? Widzisz folder public_html?
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
2

W takim wypadku faktycznie jesteś w prawdopodobnie beznadziejnej sytuacji - najlepiej darować sobie ten "super" hosting za 5 zł rocznie z dostępem tylko po FTP, i wykupić zwyczajny VPS, gdzie będziesz miał dostęp SSH i możliwość konfiguracji środowiska tak, jak Ci się podoba ;-)

Tym niemniej: nikt nie broni Ci odpalić serwera na swoim komputerze, aby móc się pobawić i zobaczyć, co z czym się je.


edytowany 2x, ostatnio: Patryk27
WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Chwila bo czegos nie zauwazylem wczesniej. Podczas zalogowania sie na ftp mam taka strukture:

  1. katalog ".appdata"
  2. Katalog ".php"
  3. Katalog "spamassasin"
  4. Katalog "applications_backups"
  5. Katalog "domains"
  6. Katalog "imap"
  7. Katalog "Maildir"
    Dwa pierwsze mają przedrostek w postaci ktopki.

Kiedy otworze kat "domains" są tam dwa katalogi. Pierwszy to nazwa konta pod ktorym sie zarejestrowalem a drugi to nazwa domeny .pl i tam sa kolejne katalogi

htpasswd, avstats, logs, public_ftp, public_html, stats
Po otwarciu public_html jest wszystko czyli cala strona. Teraz pytanie. Cxy mam utworzyc katalog dodatkowy z danymi moimi i gdzie majac taka strukture?

axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:21 minut
  • Lokalizacja:Warszawa
  • Postów:2251
1

Czyli masz dobrze, zaraz obok folderu public_html tworzysz np application i tyle. Będąc wewnątrz public_html możesz na pewno odwołać się do katalogów, które są wyżej.

czysteskarpety
czysteskarpety
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
1

ja od takich akcji mam codeignitera, działa wszędzie łącznie z php 5.6, wrzucasz paczkę do public_html, rozpakowujesz i działa, masz zabezpieczenia przed atakami, autoryzację, walidację, szyfrowanie itp.


WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Ok @axelbest. Sprawdze jak wejde na kompa bo teraz z telefonu pisze. Dam znac a jak na razie dziekuje wszystkim ktorzy odpowiedzieli dotychczas

WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Ok. Wiec kluczowe pytanie:

Co teraz z dostępem do plików.

  1. w ogóle ma tam nie być index.php/html ? Chodzi o publiczny czy w pliku index.php przekierowac do tego prywatnego katalogu i ta mma byc jeszcze jeden index.php. ?
  2. Przekierowac domene na katalog prywatny a w nim ma byc index.php ?
    Co nalezy teraz zrobic.
edytowany 2x, ostatnio: wesoly_pogrzeb
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:21 minut
  • Lokalizacja:Warszawa
  • Postów:2251
0

Oj... coraz dziwniejsze te Twoje pytania. O jakim htmlu Ty piszesz? Pisz poprawnie, bo widząc index.php. nie wiem czy tam jest literówka czy piszesz na serio.
Po raz kolejny powtórzę - zobacz jak to robią frameworki - sprawdź to sobie na localhoście i tyl, bo teraz za przeproszeniem "męczysz bułę" pytając co rusz o jakieś dziwne rzeczy.

WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0

Pytanie jest konkretne. Mam przekierowac domene na ten katalog prywatny czy w pliku index.php zrobic przekierowanie do katalogu prywatnego. Tylko i tak domene bede musial przekierowac.
Prosto się mowi jak się wie. Dla mnie to jest pytanie kluczowe.

KL
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 miesięcy
  • Postów:191
0

Ale otrzymałeś już odpowiedź, zaciągnij dowolny framework i zobacz jak to działa...
I jest konkretne, ale nie ma sensu z punktu widzenia osoby, która już coś robiła, bo kombinujesz jakoś naokoło i nie masz pojęcia jak temat ugryźć, co rozwiązałoby zajrzenie... Do dowolnego frameworka. Serio, mniej byś się denerwował i dawno już byś miał odpowiedź, gdybyś zrobił tak, jak Ci ludzie doradzają ;)

axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:21 minut
  • Lokalizacja:Warszawa
  • Postów:2251
0

No to prosto CI napisze- nigdzie nie masz robić przekierowań. Documen root ma wskazywać na folder public_html i tyle. W tym folderze masz mieć index.php i tyle. Rzeczy które mają być niedostępne użykownikom z zewnątrz powinny znajdować się poza (tzn. nie w środku) folderem public_html.

Zobacz pozostałe 3 komentarze
WP
No jelsi mam index.php gdzie mam w normalnym ukladzie katalog o nazwie 'dane' i on jest fizycznie w katalogu publicznym i w nim mam wszystkie dane (pliki .php) to teraz jesli przeniose caly ten katalog do kat. prywatnego musze jakos zlinkowac te pliki. W pliku index.php mam odsyłacze
KL
Łojezus... @wesoly_pogrzeb, sprawdź do jasnej anielki, chłopie, Laravela albo Symfony. Tam masz to zrobione zgodnie z wolą boga PHP.
KL
https://github.com/laravel/laravel/blob/master/public/index.php - proszę, oto index.php z laravela. Jeśli wiesz, że istnieje coś takiego jak autoloder i umiesz się nim posłużyć, to właśnie na tym się opiera cała magia. Ciężko powiedzieć co masz na myśli dokładnie przez "odsyłacze", ale brzmi to jak kombinowanie jak koń pod górkę, a to ani potrzebne ani sensowne.
WP
Nosz qfa. Jesli zostawie plik index.php w katalogu publicznym a wszystko czyli cala reszte wsadze w katalog nadrzędny nie będący w katalogu publicznym to jak ma to dzialac. Mam linki kierowac do katalogu nadrzednego ? Zaraz zglupieje
axelbest
A znasz takie pojęcia jak kontroler, widok, model? Skoro linkujesz np a href=dupa.php - to znaczy ze ten plik na byc w folderze public_html. Ty natomiast cały czas pytałeś o to jak ukryć Twoje "dane w plikach".
KL
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 miesięcy
  • Postów:191
0

Nosz qfa. Jesli zostawie plik index.php w katalogu publicznym a wszystko czyli cala reszte wsadze w katalog nadrzędny nie będący w katalogu publicznym to jak ma to dzialac. Mam linki kierowac > do katalogu nadrzednego ? Zaraz zglupieje

Synu złoty... Jak Ty piszesz te skrypty?
Jest to pisane obiektowo, używająć MVC/MVVM/etc. czy działasz na kolejnych include'ach skryptów, które są pisane proceduralnie i lecisz po kolei, traktując je tak samo jak htmle?

Bo jeśli piszesz obiektowo, to żadnych linków nie przekierowujesz, tym się zajmują skrypty właśnie, a dokładniej jakiś router/front controller, który obsługuje request.
To co piszesz natomiast brzmi jakbyś miał plik .php dla każdej podstrony z jakimiś jej skryptami. W takim przypadku ta separacja niespecjalnie dobrze będzie chciała działać i najpierw musisz się zająć obiektówką, coby pisać jak cywilizowany człowiek :P

Także... Jak chcesz bardziej rozjaśnić sytuację, to pochwal się fragmentem kodu, bo naprawdę nie wiemy co Ci chodzi po głowie i zaraz wszyscy dostaniemy zajoba :)

edytowany 1x, ostatnio: Klojtex
WP
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad 6 lat
  • Postów:32
0
Klojtex napisał(a):

Nosz qfa. Jesli zostawie plik index.php w katalogu publicznym a wszystko czyli cala reszte wsadze w katalog nadrzędny nie będący w katalogu publicznym to jak ma to dzialac. Mam linki kierowac > do katalogu nadrzednego ? Zaraz zglupieje

Synu złoty... Jak Ty piszesz te skrypty?
Jest to pisane obiektowo, używająć MVC/MVVM/etc. czy działasz na kolejnych include'ach skryptów, które są pisane proceduralnie i lecisz po kolei, traktując je tak samo jak htmle?

Bo jeśli piszesz obiektowo, to żadnych linków nie przekierowujesz, tym się zajmują skrypty właśnie, a dokładniej jakiś router/front controller, który obsługuje request.
To co piszesz natomiast brzmi jakbyś miał plik .php dla każdej podstrony z jakimiś jej skryptami. W takim przypadku ta separacja niespecjalnie dobrze będzie chciała działać i najpierw musisz się zająć obiektówką, coby pisać jak cywilizowany człowiek :P

Także... Jak chcesz bardziej rozjaśnić sytuację, to pochwal się fragmentem kodu, bo naprawdę nie wiemy co Ci chodzi po głowie i zaraz wszyscy dostaniemy zajoba :)

Nie nie pisze obiektowo.

axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:21 minut
  • Lokalizacja:Warszawa
  • Postów:2251
0

To napisz dokładnie jakie konkretne dane/rzeczy chcesz ukrywać przed niepowołanym dostępem?

WP
Ogólnie to jest sens robienie czegos takiego ja kWy piszecie jesli mam "zwykłą" strone ? Jedynie co includuje to pliki gdzie mam funkcje i plik konfiguracyjny. Do tych plików też ktoś może się dostać?? Są to pliki .php w innym folderze.
axelbest
Nadal nie wiem co w takim razie chcesz ukrywać przed ludźmi? Jak masz plik super_tajne_dane.php - a w nim masz dane np dostępu do bazy - to jeśli te dane są wewnątrz znaczników php i nie są wywalane np za pomocą jakiegoś echo - to wchodząc na www.Twoja-domena.pl/super_tajne_dane.php nikt nie zobaczy przeciez zawartosci tego pliku. Skoro mowisz o danych konfiguracyjnych (np maile, baza, api) to jaki problem w przeniesieniu ich poza public_html? No chyba że nie wiesz że można includować pliki tak include ('../../moj_tajny_plik.php')
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)