39 lines
1.6 KiB
Markdown
39 lines
1.6 KiB
Markdown
# Kısalt — bağlantı kısaltıcı
|
|||
|
|
|
||
|
|

|
||
|
|
|
||
|
|
Uzun bir adres verin, KabaLang ona 6 harflik bir kod versin; `/k/{kod}` gerçek bir
|
||
|
|
**HTTP 302** ile hedefe yönlendirir ve her tıklamayı sayar. Sayfaların tamamı sunucuda,
|
||
|
|
KabaLang metin işlemleriyle üretilir — şablon motoru yok.
|
||
|
|
|
||
|
|
```bash
|
||
|
|
kabalang calistir web/kisalt/kisalt.kbl
|
||
|
|
# → http://127.0.0.1:8472
|
||
|
|
```
|
||
|
|
|
||
|
|
## Neyi gösteriyor
|
||
|
|
|
||
|
|
| Konu | Nerede |
|
||
|
|
|---|---|
|
||
|
|
| Rastgele kısa kod + çakışma döngüsü (`iken ... != "0"`) | `yeni_kod`, `kaydet` |
|
||
|
|
| Gerçek yönlendirme: `web.yanit("", 302).baslik("Location", adres)` | `yonlendir` |
|
||
|
|
| Sunucuda çizilen **SVG çubuk grafik** (son 7 gün) | `yedi_gun_svg` |
|
||
|
|
| Üç tırnaklı metin ile tek yerde tutulan stil | `STIL = """ ... """` |
|
||
|
|
| Özel 404 sayfası: `sunucu.bulunamadi(...)` | sonda |
|
||
|
|
|
||
|
|

|
||
|
|
|
||
|
|
## Güvenlik
|
||
|
|
|
||
|
|
- **SQL enjeksiyonu:** bütün sorgular parametre bağlamalıdır (`?`); kullanıcı verisi asla
|
||
|
|
sorgu metnine eklenmez.
|
||
|
|
- **Açık yönlendirme / betik bağlantısı:** yalnız `http://` ve `https://` adresleri kabul edilir;
|
||
|
|
`javascript:` ya da `file:` ile başlayan bir "bağlantı" 422 ile reddedilir.
|
||
|
|
- **XSS:** hedef adres sayfaya yalnızca **metin** olarak, `web.kacir` ile kaçırılarak basılır;
|
||
|
|
`href` içine giren tek şey bizim ürettiğimiz, yalnız harf-rakamdan oluşan kısa koddur.
|
||
|
|
|
||
|
|
Veritabanı yolu `KISALT_DB` ile değiştirilebilir (varsayılan `kisalt.db`). İlk açılışta
|
||
|
|
tanıtım için birkaç bağlantı ve geçmiş tıklama oluşturulur.
|
||
|
|
|
||
|
|

|