توانایی خود را افزایش دهیم

فرهنگ و هنر
توانایی خود را افزایش دهیم

بسم الله الرحمن الرحیم

با سلام

• لطفا مطالب سایت را به صورت منظم پیگیری کنید
• ارائه پیشنهادات و نظرات شما باعث بهبود کیفیت ارائه مطالب خواهد شد

بعضی از مطالب آموزشی سایت توسط اینجانب نوشته نشده و صرفا جهت مطالعه دوستان از منابع دیگری جمع آوری شده است
چنانچه در مطالب موضوعی ملاحظه شد که از نظر علمی ، اعتقادی ، سیاسی ، مذهبی و ... دارای مشکل بود حتما در قسمت نظرات ذکر بفرمایید تا اصلاح گردد.
با تشکر
موفق باشید

طبقه بندی موضوعی
آخرین نظرات
  • ۲۱ خرداد ۹۶، ۲۲:۰۲ - مهدی
    سپاس

۲ مطلب در مهر ۱۳۹۳ ثبت شده است

شنبه, ۵ مهر ۱۳۹۳، ۱۲:۳۵ ب.ظ

درس سیزدهم- عبارات منظم Regular Expression

مقدمه
در دو درس قبلی با چند نوع برای بررسی داده‌های ارسال شده توسط کاربران آشنا شدیم. یاد گرفتیم که باید همیشه این داده‌ها را بررسی کرد و بدون بررسی دقیق آنها اجازه وارد شدن به پایگاه صادر نکنیم. در این درس با مبحث تازه‌ای به نام عبارت منظم آشنا می‌شویم.

 

عبارات منظم
عبارات منظم یک تکنیک است که توسط آن می‌شود یک متن را بر اساس الگوی دلخواه بررسی کرد. شیوه کار آن این است که ما ابتدا یک الگو تعریف می‌کنیم و بعد داده‌ها را بر اساس آن الگو ارزیابی می‌کنیم. یعنی با توجه به الگوی تعریف شده٬ ماهیت داده‌ را جستجو کرده و اگر همخوانی داشت مهر تایید به آن می‌زنیم. به زبان ساده‌تر می‌شود٬ جستجوی یک متن برای اینکه ببینیم آیا با الگوی تعریف شده ما می‌خواند یا نه؟ اجازه بدهید با یک مثال این مقوله را بهتر بیان کنیم. فرض کنید که می‌خواهید ببینید که آیا درون کلمات ورودی حرف b وجود دارد یا نه. برای این کار یک الگو می‌سازیم که کلمه‌های ورودی را با الگوی ما مقایسه کند و در صورت برابری (وجود b در متن مورد نظر) خروجی «۱» به معنی مثبت بدهد.

ساخت یک عبارت منظم٬ ساختار منحصر به فرد خود را دارد٬ این یعنی باید از یک ‌سری قوانین مشخص پیروی کنیم. اما پیاده سازی عبارت منظم در پی‌اچ‌پی توسط توابعی صورت می‌گیرد. تابعی که ما از آ> بیشتر استفاده می‌کنیم تابعpreg_matvh()  است.

Preg_match ( الگو ,  داده  ) ;

Preg_match ( ‘/b/’ , ‘babak’ );

 همانطور که در مثال بالا گفته شد٬ یک عبارت منظم نوشته شده است تا وجود حرف b را در مقادیر وارد شده بررسی کند (که در اینجا  ‘babak’ است).

الگویی که برای بررسی می‌سازیم باید در بین علامت نقل قول قرار گیرد یا همان " " خودمان. ابتدایی‌ترین و آخرین حرف این الگو هم نشانه آغاز و پایان بارت هستند که به آنها نشانه می‌گوییم. این نشانه می‌تواند هر کاراکتری باشد٬ اما باید کاراکتری باشد که شما در داخل عبارت استفاده نمی‌کنید. یعنی اگر قرار است در داخل مقدار ورودی دنبال علامت سوال ؟ بگردید٬ نباید از این علامت برای آغاز و پایان الگو استفاده کنید. در مثال بالا ما از / استفاده کردیم٬ می‌توان از کاراکتر‌هایی مثل ! یا |  هم استفاده کرد. باز این بستگی به کاربرد الگو دارد.

 

قسمت‌های تشکیل دهنده الگو در عبارات منظم

- نشانه یا آغاز و پایان الگو  Delimiter
همانطور که قبلا هم گفتیم باید از یک کاراکتر یکسان (یکی در آغاز و یکی در پایان) برای مشخص کردن شروع و پایان الگو استفاده کنیم. کاراکترهایی مانند/, |, ?  یا #  بسته به اینکه اگر در داخل متن ورودی دنبال آنها نگردیم٬ انتخاب خوبی هستند.

- لفظ‌ها  Literal
لفظ‌ها در اصل همان حروف یا کاراکترهایی هستند که ما در داخل متن دنبال آنها هستیم٬ بطور مثال اگر می‌خواهید وجودasd  را داخل متنی جستجو کنید٬asd  همان لفظ شما است.

- کاراکترهای ویژه  Metacharacter
کاراکترهای ویژه٬ کاراکترهایی هستند که ما در داخل متن در جستجوی آنها نیستیم و آنها برای ما معنی ویژه‌ای دارند٬ بطور مثال علامت ^ یا. یا علامت‌های ( ) از این کاراکترهای ویژه هستند. مثلن علامت "." با هر کاراکتری برابری می‌کند. وقتی در الگو از "." استفاده می‌کنیم٬ این یعنی در جای "." هر کاراکتری می‌تواند باشد٬a  یا c  ـ  یا هر کاراکتر دیگر. علامت ^ هم یعنی آغاز الگوی متنی ما. بطور مثال^a  یعنی هر متنی که باa  آغاز شود. در زیر فهرستی از چند کاراکترهای ویژه با معنی آنها می‌آوریم:

^: آغاز رشته مورد نظر را بیان می‌کند که در الگو استفاده می‌شود.

$: پایان رشته مورد استفاده در الگو

. : هر کاراکتر تنهایی

| : انتخاب بین دو واژه٬ بطور مثال  a | S یعنی یا  a یا  s

[]: این دو کاراکتر آغاز و پایان یک مجموعه یا لیست از موارد مورد استفاده در الگو را بیان می‌کنند٬ که به آن کلاس می‌گوییم.

؟ : معنی صفر یا یک کاراکتر را می‌دهد.

* : معنی صفر کاراکتر یا بیشتر

+: یک کاراکتر یا بیشتر

{}: شروع و پایان یک محدوده برای جستجو را تعیین می‌کنند. مثلا{x,y}  یعنی که ازx  تا  y را جستجو کن. فرض کنید که می‌خواهیم از a   d را جستجو کنیم٬ پس می‌شود.  {a , d } .

 

۲ نظر موافقین ۰ مخالفین ۰ ۰۵ مهر ۹۳ ، ۱۲:۳۵
سه شنبه, ۱ مهر ۱۳۹۳، ۰۳:۰۶ ب.ظ

درس دوازدهم- موارد بیشتری از امنیت تارنما

مقدمه
در درس پیشین مواردی از رعایت امنیت در ساخت تارنما را معرفی کردیم. در این درس به چند مورد مهم دیگر می پردازیم.

 

ارزیابی فایل‌ها با توجه به نوع آنها
در درس ارسال فایل (عکس) یاد گرفتیم که چطور یک فایل را به سیستم ارسال کرده و از آن استفاده کنیم. نکته ای که در این بحث مورد توجه است٬ این است که این ارسال امکان نفوذ به سیستم را از طریق فایل فراهم می‌کند. البته برای ارسال فایل ما از فیلتری برای بررسی نوع فایل استفاده کردیم که آن به شکل گرفتن نوع فایل از متغیر: $_FILES['upload']['type'] نمایان شد.

این نوع بررسی نوع فایل توسط مرورگر فراهم می‌شود که به نوعMIME  فایل رجوع می‌کند. علی رغم اینکه این بررسی کار مناسبی است٬ اما هنوز راه های نفوذ وجود دارند٬ بر همین اساس به راه‌های دیگر که پی‌اچ‌پی فراهم کرده اشاره می‌کنیم.

شیوه‌ای که در پی‌اچ‌پی نسخه ۵.۳ به بعد اضافه شده است به این شکل است: یک ظرفی برای شناسایی نوع فایل وجود دارد که نوع فایل و کدگذاری آن را بر اساس جستجوی اعداد جادویی در داخل محتوای فایل نمایان می‌کند. به این معنی که اطلاعاتی که فایلی را تشکیل می‌دهند٬ بر اساس نوع فایل با اعداد یا کاراکتر‌های ویژه آن فایل آغاز می‌شوند. بطور مثال فایل‌هایGIF  (نوعی فایل برای عکس)٬ باید با کاراکتر و کد اسکی (ASCII) مشخصGIF89a  یا GIF87a  آغاز شوند٬ و یا فایل‌هایPDF  باید با کد %PDF آغاز شوند. این کدها همانطور که گفته شد باید در ابتدای داده‌های سازنده آن فایل آورده شوند.

برای بکارگیری این تکنیک باید ابتدا یک ارجاع دهنده برای فایل بسازیم:

$fileinfo = finfo_open(FILEINF_MIME_TYPE);

این ارجاع دهنده در اصل مرجعی برای دست‌یابی به اطلاعات فایل بر اساس نوع داده شده است (در داخل پرانتز).

۰ نظر موافقین ۱ مخالفین ۰ ۰۱ مهر ۹۳ ، ۱۵:۰۶