ترفندهای برنامه‌نویسی
164 subscribers
27 photos
3 videos
22 files
615 links
Download Telegram
Forwarded from Free Knowledge | دانش آزاد (Dr.M0h4MM4d LTS version)
امنیت در جنگو؟؟

جنگو به صورت پیش فرض مکانیزم های امنیتی خود را دارد و از همه اسیب پذیری ها جلوگیری میکند، مانند: xss, csrf, sqli, host/header validation و ...

یک خلاصه ای در باره اینکه چگونه از هر کدوم جلوگیری میکند به شما میدم

XSS:
جنگو برای جلوگیری از xss از escape especific characters استفاده میکند که موجب میشود تگ های html و کاراکتر های خاص html شکل دیگری بگیرند بطوری که اجرا نشوند

CSRF:
جنگو یک میدلویر برای جلوگیری از این اسیب پذیری ارائه می‌دهد که در رکوئست های پوست referer کاربر را میگیرد تا ببیند برای همین هاست یا origin هست یا خیر اگر بود مشکلی ندارد اگر نبود ارور csrf میدهد.

SQLi:
جنگو یک orm به ما ارائه میدهد که این orm از بد کوئری ها جلوگیری می‌کند و جلوی sqli را تا حد امکان میگیرد، ولی وقتی شما از تابع raw استفاده کنید مستقیم باید دستور sql وارد کنید و پروتکشنی درکار نیست، باید مراقب باشید.

Host/Header validation:
جنگو در settings.py یک لیست ALLOWED_HOSTA به ما ارائه میدهد که در آن باید هاست های شناخته شده ی مان را قرار دهیم، نظیر 127.0.0.1 و دامین سایت، این مکانیزم امنیتی از هاست های فیک در مواقع مختلف جلوگیری میکند.

تا اینجا که میبینیم جنگو وظیفه ی خودشو خوب انجام داده پس وظیفه ما چیست؟

1-هیچوقت سکرت کی موجود در settings.py را عمومی نکنید.

2-هیچوقت در رکوئست های POST از csrf_exempt استفاده نکنید.

3-هیچوقت در فرم های کاربران از فیلتر safe استفاده نکنید

4-هیچوقت اطلاعات ایمیل، دیتابیس، api هایی که در پروژتون استفاده میکنید رو در فایل settings.py قرار ندید و داخل .env یا متغیر های محیطی قرار بدید.

5-از ادیتور هایی مانند ckeditor برای کاربران عادی استفاده نکنید زیرا برای نشون دادن محتوا مجبورید فیلتر safe استفاده کنید و موجب رخ دادن xss و html injection میشود.

#جنگو
#پایتون
#امنیت

@FreeKnowledgeOfficial
چهارجلد کتابه از اینجا میتونید دانلود کنید.
بنظرم اینجور کتابها خیلی برای آدم مفیده از روش‌های اساسی حل مسئله و تحلیل الگوریتم ‌ها هرچی بدونیم کمه
https://libgen.is/search.php?req=The+Art+of+Computer+Programming&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def
ترفندهای برنامه‌نویسی
blog.bjrn.se: Lexicographic permutations using Algorithm L (STL next_permutation in Python) http://blog.bjrn.se/2008/04/lexicographic-permutations-using.html?m=1
def next_promutation(li: list) -> list:
"""returns next promutation of a given list"""
j = -2
while True:
if li[j+1] < li[j]:
j -= 1
if j == 0:
break
else:
break
lii, liii = li[:j+1], li[j+1:]
m = -1
while True:
if liii[m] < lii[-1]:
m -= 1
else:
lii[-1], liii[m] = liii[m], lii[-1]
break
liii = sorted(liii)
return lii + liii