2. طراحی سایت
3. سئو سایت
4. سئو
9. طراحی سایت
10. سئو سایت
11. سئو
12. طراحی وب سایت
13. طراحی سایت شرکتی
15. طراحی سایت تهران
16. طراحی سایت
17. سئو سایت
18. طراحی وب سایت
19. طراحی سایت شرکتی
21. طراحی سایت تهران
22. طراحی سایت
23. سئو سایت
24. طراحی وب سایت
25. طراحی سایت شرکتی
27. طراحی سایت تهران
28. طراحی سایت
29. سئو سایت
30. طراحی وب سایت
31. طراحی سایت شرکتی
33. طراحی سایت تهران
34. طراحی سایت
35. طراحی وب سایت
36. طراحی سایت شرکتی
38. طراحی سایت تهران
39. طراحی سایت
40. طراحی وب سایت
41. طراحی سایت شرکتی
43. طراحی سایت تهران
44. طراحی سایت
45. سئو سایت
46. طراحی وب سایت
47. طراحی سایت شرکتی
49. طراحی سایت تهران
50. طراحی سایت
51. طراحی وب سایت
52. طراحی سایت شرکتی
54. طراحی سایت تهران
55. طراحی سایت
56. طراحی وب سایت
57. طراحی سایت شرکتی
59. طراحی سایت تهران
60. طراحی سایت
61. طراحی وب سایت
62. طراحی سایت شرکتی
64. طراحی سایت تهران
65. طراحی سایت
66. طراحی وب سایت
67. طراحی سایت شرکتی
69. طراحی سایت تهران
70. طراحی سایت
71. طراحی وب سایت
72. طراحی سایت شرکتی
74. طراحی سایت تهران
75. طراحی سایت
76. طراحی وب سایت
77. طراحی سایت شرکتی
79. طراحی سایت تهران
80. طراحی سایت
81. طراحی وب سایت
82. طراحی سایت شرکتی
84. طراحی سایت تهران
85. طراحی سایت
86. طراحی وب سایت
87. طراحی سایت شرکتی
89. طراحی سایت تهران
90. طراحی سایت
91. طراحی وب سایت
92. طراحی سایت شرکتی
94. طراحی سایت تهران
95. طراحی سایت
96. طراحی وب سایت
97. طراحی سایت شرکتی
99. طراحی سایت تهران
مدت ها است که iPad ها به یک ابزار مهم یادگیری مخصوصا برای کودکان بدل شده اند. اما ذهن کنجکاو کودکان تنها به یادگیری و استفاده از ابزارهای کاربردی قانع نمی شود و همیشه به دنبال کشف چیزهای جدید است. یکی از مسائل نگران کننده نیز دسترسی کودکان به اطلاعات نامتناسب با شرایط سنی آن هاست. در این آموزش، شیوه بلاک کردن محتوا و سایت های نامناسب بر روی IOS را توضیح خواهیم داد.
بلاک کردن سایت ها از نسخه 7 به سیستم عامل IOS اضافه شد و مسیر فعال کردن این قابلیت بر روی نسخه های مختلف چندان متفاوت نیست. ابتدا باید به قسمت General تنظیمات خود بروید و سپس گزینه Restriction را فعال کنید. اگر برای اولین بار است که از این امکان استفاده می کنید باید کلمه عبوری را برای آن مشخص کنید. سپس با پیمایش صفحه، قسمتی با عنوان Websites را در انتها لیست مشاهده خواهید کرد.
در ادامه گزینه All Websites را غیرفعال کنید و سپس گزینه Limit Adult Content برای محتوای غیراخلاقی و یا گزینه Specific Websites را برای دیگر سایت ها فعال کنید. بعد از این باید سایت های که قصد بلاک آن ها را دارید در قسمت Never Allow اضافه کنید. برای این کار Add Website را در زیر Never Allow انتخاب کنید. به همین سادگی کودکان خود را در برابر محتوای نامناسب شبکه مجازی محافظت کرده اید.
گفتنی است این شیوه محافظ نه تنها بر روی اپلیکیشن های خود IOS عمل می کند بلکه دیگر مرورگرها یا نرم افزارها را نیز از دسترسی به محتوا مورد نظر شما منع می کند.
فرقی نمیکند که در چه رشتهای تحصیل میکنید یا قصد دارید در آینده چه تخصصی داشته باشید؛ امروزه داشتن اندکی دانش دربارهی برنامه نویسی (یا به بیان بهتر "کدنویسی") برای همه مفید است. در ادامهی مطلب خواهیم دید که ارتقاء مهارتهای کدنویسی چگونه به سه دستهی "کارآفرینان بدون تجربه"، "برنامهنویسان سنتی" و "مدیران اجرایی" کمک خواهد کرد.
اکثر افراد حوصله یا زمان کافی برای یادگیری یک مهارت جدید را ندارند. یادگیری یک زبان برنامهنویسی هم از جمله مهارتهای نسبتاً دشوار و زمانگیر است. علاوه بر آن، انتخاب اینکه چه زبان برنامهنویسی را چه موقع و چگونه یاد بگیرید، خود فرآیندی زمانبر است.
با وجود تنوع کلاسها، کارگاههای آموزشی، ویدئوها، نرم افزارهای آموزشی و کتابهایی که برای انتخاب وجود دارند، و از طرفی وجود زبانهای مختلف و متفاوت، تصمیم گیری دربارهی اینکه کدام روش یادگیری و کدام زبان برنامهنویسی شما را سریعتر به هدفتان میرساند کمی گیج کننده است. با رعایت نکاتی کوچک میتوانید زمان بیشتری را روی کدنویسی و زمان کمتری را روی تصمیم گیری صرف کنید.
سه حالت بسیار معمول را در نظر بگیریم: دستهی اول کسانی هستند که قصد دارند برنامهنویسی را شروع کنند. دستهی دوم افرادی هستند که میخواهند با افزایش مهارتهای خود در برنامهنویسی موقعیت شغلی بهتری پیدا کنند، و در آخر دستهی سوم کسانی هستند که کار آنها به نوعی با برنامهنویسها و کدنویسی مرتبط است و تنها قصد دارند با اصول برنامهنویسی آشنا شوند.
کارآفرینها
فرض کنید ایدهای خلاقانه برای ساخت یک اپلیکیشن موبایل به ذهنتان رسیده است؛ ایدهای که به عقیدهی خودتان پتانسیل بسیار بالایی برای موفقیت دارد. اما نمیدانید این ایده را چطور به یک پروژهی واقعی تبدیل کنید. اگر یک توسعه دهنده و کارآفرین مشتاق هستید و تجربهی کمی در علوم کامپیوتر دارید، تلاش برای اینکه خودتان به صورت خودآموز برنامهنویسی را یاد بگیرید میتواند بسیار مشکل باشد.
اگر هیچ پیشزمینهای در کدنویسی نداشته و مطمئن نیستید که باید از کجا شروع کنید، خودآموزی شاید گزینهی مناسبی برای شما نباشد. به جای آن بهتر است که در دورههای آموزشی برنامه نویسی شرکت کنید.
در این دورهها تمام آنچه برای یادگیری برنامه نویسی نیاز دارید موجود است؛ از مربیان مجرب گرفته تا منابع آموزشی مورد نیاز، همه چیز در اختیار شما است. از نکات منفی این روش هم میتوان به قیمت بالا و وقتگیر بودن این دورهها اشاره کرد؛ بطوریکه برای گذراندن بعضی از آنها باید به مدت یک تا سه ماه به صورت تمام وقت در کلاسها شرکت کنید. اگر مشکل مالی ندارید، شرکت در این دورهها قطعاً یکی از بهترین جاهایی است که میتوانید برنامهنویسی را شروع کنید.
دورههای آموزشی آنلاینی هم وجود دارند که میتوانید در آنها شرکت کنید. Coding Dojo و Bloc از جمله بهترین دورههای آموزشی آنلاین هستند.
نکتهی مهم، به خصوص اگر قصد ساختن اپلیکیشن برای تلفنهای هوشمند را دارید، یادگیری برنامهنویسی مخصوص موبایل است. برای مثال اگر میخواهید اپ خود را برای iOS توسعه دهید، سوئیفت (Swift) یک زبان عالی برای شروع به کار است. هر چند میتوان از Objective C هم استفاده کرد، اما توصیه میشود با روشهای آسان کار خود را شروع کنید. در مورد برنامه نویسی برای اندروید هم اگرچه ابزارهای زیادی وجود دارند، اما یکی از آسانترین روشها برای شروع استفاده از Android Studio است.
برنامه نویسان سنتی
چیزی که برنامه نویسی را از دیگر مهارتها متمایز میکند این است که فرآیند یادگیری در آن هیچگاه تمامی ندارد. در طول زمان، کسب و کارها اولویت خود را به زبانهای خاصی میدهند و به برنامهنویسهایی که در آن زمینه قدرت بیشتری دارند، لطف بیشتری نشان میدهند. اگر دارای پیشزمینه در برنامهنویسی بوده و با کدنویسی به صورت کلی آشنایی دارید، اما میخواهید در زمینهای خاصی متخصص شوید یا مهارتهای دیگری یاد بگیرید تا در بازار کار موفقتر ظاهر شوید، نکات مهمی وجود دارند که با رعایت آنها وقت و انرژی خود را بیهوده تلف نخواهید کرد.
اگر میخواهید به صورت خودآموز کدنویسی را بیاموزید، چه از طریق کتاب و چه از طریق دورههای آموزش رایگان آنلاین، توصیه میشود قبل از شروع نگاهی به آگهیهای استخدام انداخته و موقعیتهای شغلی و زبانهایی که احتیاج دارند را بررسی کنید.
به صورت کلی در حال حاضر چندین حیطه بسیار داغ و جذاب هستند. شرکتها به دنبال افرادی میگردند که تجربهی کار با AWS یا کار کردن با API ها را داشته باشند و خیلیها به دنبال توسعهدهنده با تسلط کافی به روبی آن ریلز (Ruby on Rails) هستند. علم دادهها هم در حال حاضر رو به رشد است و یادگیری دربارهی محاسبات بزرگ (مثلاً با استفاده از هدوپ (Hadoop)، که به شما اجازه میدهد محاسبات دادهای را روی هزاران کامپیوتر اجرا کنید) باعث میشود که مهارت منحصر به فردی داشته باشید که افراد زیادی از آن بهرهمند نیستند.
هنگامی که زبان بعدی که قرار است یاد بگیرید را انتخاب کردید (یا تصمیم به تقویت مهارتهای خود در زبانی که از قبل به آن مسلط هستید گرفتید)، این زبان چه روبی آن ریلز باشد، چه پایتون (که برای استخدام در شرکتهای بزرگ بسیار مهم است) یا جنگو، مهارتهای غیر مرتبط با برنامهنویسی زیادی هم وجود دارند که باعث میشوند برای شرکتها جذاب شوید. برای مثال تسط بر Git و Github برای تبدیل شدن به یک برنامهنویس بهتر در طول زمان ضروری است.
البته توجه داشته باشید که تمام اینها باید در خدمت پر بارتر کردن هرچه بیشتر رزومهی شما باشند. داشتن مدرک مهندسی نرمافزار یا علوم کامپیوتر دیگر مانند گذشته مهم نیست. برای استخدام شدن در شرکتهای خصوصی و استارتآپها داشتن یک رزومهی قوی بسیار موثرتر از مدرک دانشگاهی است.
مدیران اجرایی
دستهی آخر از کسانی که به برنامهنویسی علاقه دارند، مدیرانی هستند که میخواهند چیزهای جدید یاد بگیرند؛ مدیران سطح بالایی که در شرکت خود با تعداد زیادی برنامهنویس کار میکنند و دوست دارند بدانند فرآیند توسعهی یک نرمافزار به چه صورت است تا بتوانند برنامهریزی زمانی و بودجه بندی مناسبی داشته، تیم خود را بهتر مدیریت کرده و از کارمندان خود انتظارات معقولی داشته باشند.
این گروه از افراد یک ویژگی خاص دارند: آنها احتیاجی ندارند به این فکر کنند که برای موفقیت باید به دنبال آموزش چه زبانی بروند، چرا که آنها از قبل صاحب یک کسب و کار موفق هستند.
برای پیشرفت شرکت و ارتباط موثر بین افراد متخصص و غیر متخصص، درک مبانی برنامهنویسی کمک میکند تا تمام تیم بازده بیشتری داشته باشد و بهینهتر عمل کند. آشنایی اندک با برنامهنویسی باعث میشود با کارکنان زیردستتان بهتر ارتباط برقرار کرده و تصمیمهای عاقلانهتری برای اختصاص منابع بگیرید.
نکتهی دیگری که یادگیری برنامهنویسی برای مدیران را راحتتر میکند این است که صرف نظر از نوع زبانی که آن را یاد میگیرند، با شروع یادگیری هر زبانی با اصول برنامهنویسی آشنا خواهند شد. منابع آنلاین خوبی مثل لیندا، اودمی و آموزش یک ماههی برنامهنویسی وجود دارند که بسته به سلیقهی خودتان میتوانید از بین آنها انتخاب کنید. تمامی این دورهها شما را با اصول اولیه آشنا خواهند کرد.
پس میتوانید از همین امروز شروع کنید: پروژهی برنامهی موبایلی که در سر دارید را به واقعیت تبدیل کرده، موقعیت شغلی بهتری پیدا کرده یا با مجموعهی مهندسان خود راحتتر ارتباط برقرار کرده و بهتر مدیریت کنید.
شما جزء کدام دسته از افراد بالا هستید؟ آیا برنامهنویسی را به صورت خودآموز یاد گرفتهاید یا در کلاسها و دورههای برنامهنویسی شرکت کردهاید؟ تجربیات ارزشمند خود از یادگیری برنامهنویسی را با ما و خواندگان زومیت درمیان بگذارید.
این روزها ارسال و دریافت ایمیلهای زیاد کاری، سهم بزرگی در هماهنگی، یادآوری و انجام کارهای روزمره در کسب و کارها پیدا کرده است. نکتهی بد اینجاست که تعداد این ایمیلها در گذر زمان به جای کم شدن، بیشتر و بیشتر میشود و جواب دادن به همه آنها کاری سخت. در ادامه رازهایی درباره ایمیلها به شما خواهیم گفت که نوشتن و تاثیرگذاری آنها را چند برابر میکند.
جافری جیمز، نویسنده وبسایت Inc با تجربه زیادی که در نوشتن ایمیلهای کسب و کار، فروش و مواردی مشابه دارد، چندین نکته، ترفند و میانبر را برای نوشتن ایمیلهای عالی پیشنهاد میکند:
13. گفتاری، اما زیبا بنویسید
بسیاری از ما زمانی که قصد نوشتن یک ایمیل را داریم مکلف به رعایت تمام اصول و قواعد نامه نگاری میشویم و کاملا آن را به صورت نوشتاری سخت و غیرقابل هضم درمیآوریم. کسب و کارهای موفق این پیچیدگیها را کنار میگذارند و به راحتی و حتی در ایمیل به صورت گفتاری با یکدیگر صحبت میکنند.
12. اول پیشنویس کنید و بعد دوباره بنویسید
اول از همه تمام ایدههایی که در ذهن دارید را بدون هیچ ترسی دربارهی ترتیب یا لحن سخن بنوسید. بعد از ابتدا شروع کنید و جملات و کلمهها را تا حد ممکن کوتاهتر و سادهتر کنید.
11. درخواست پاسخ به ایمیل را واضح بگویید
اگر جواب واضح به ایمیل خود نیاز دارید یا میخواهید تصمیمی گرفته شود یا ارتباط با شخصی خاصی برقرار شود واضح و مشخص بگویید.
10. تنها دوبار از «من» یا «ما» استفاده کنید (حداکثر)
شاید دوری کردن از این دو کلمه به صورت کلی کار بسیار سختی باشد، اما سعی کنید در سه جمله از ایمیل شما حداکثر یک یا دوباره «من» یا «ما» استفاده شود. استفاده از زیاد از حد از این دو کلمه شما را خودمحور نشان میدهد.
9. سری به سر خواننده بزنید!
خود را به جای شخصی که قرار است ایمیل شما را دریافت کند بگذارید و چیزهایی که نوشتهاید را بخوانید. جملاتی که نوشتهاید جالب هستند؟ اگر نه جملاتی را تصور کنید که برای دریافت کننده ایمیل احتمالا جذاب خواهند بود. اکنون با توجه به این موضوع جملات را تغییر دهید یا دوباره بنوسید.
8. جملات سنگین و پیچیده را به جملاتی ساده تبدیل کنید
هر جملهای که بیش از یک ایده، توصیه، پیشنهاد، نظر و مواردی از این دست را در خود جای داده، بشکنید و دو جملهی کوتاهتر برای راحتی بیشتر در خواندن بنویسید.
7. از سادهترین کلمات ممکن استفاده کنید
اگر کلمهای کوتاهتر وجود دارد که میتواند منظور شما را منتقل کند، از آن استفاده کنید. مرحلهی بعد از این احتمالا استفاده از کلمات بسیار ساده اما با معنی گویاتر است.
6. هر چیز گیج کنندهای را دوباره بنویسید
هر کلمهی خارجی سخت در تلفظ یا غیرمتعارف را حذف کنید و از کلماتی ساده، سرراست و با معنی مستقیم استفاده کنید تا خواننده راحت منظور شما را متوجه شود.
5. به ایمیلهای خود شکلی ساده و سرراست بدهید
لازم نیست برای نوشتن ایمیل خود از فرمتهای خاصی استفاده کنید که صفحه را شلوغ کند یا تمرکز خواننده را از بین ببرد. بسیاری از افراد تنها متن ایمیلها را میخوانند.
4. منظور خود را واضح و سریع بگویید
اگر قصد دارید درباره چیزی توضیح دهید، این توضیح را حداکثر در ۲ یا ۳ جمله جای دهید و اگر به بیش از این نیاز بود، در قالب یک متن یا سند به ایمیل پیوست کنید.
3. از شکلکها استفاده کنید :)
ایموجیها به راحتی میتوانند حالت چهرهی شما را ترسیم کنند. زمانی که جملات از بیان حالت شما ناتوان میمانند، ایموجیها به راحتی اینکار را انجام میدهند. ایموجیها در ایمیلهای غیررسمی موجود در کسب و کار شما کاملا مناسب هستند.
2. اندازهی فونت را تغییر دهید و دوباره بخوانید
با تغییر کلمات در صفحه، دوباره ایمیل را بخوانید تا متوجه تمام چیزهایی که نوشتهاید شوید؛ نه اینکه تصوری از نوشتهی خود در ذهن داشته باشید. در همین حین ممکن است اشتباهاتی را پیدا کنید که در صورت انجام ندادن این تغییر کوچک، ممکن بود از آنها غافل بمانید.
1. بلند بخوانید تا تاثیر آن را متوجه شوید
خواندن بلند جملاتی که نوشتهاید کمک میکند کلمات نامتعارف در هر جمله را پیدا کنید.
در سال ۲۰۰۶ اعضای یکی از گروههای مجرمانه فروشگاههای آنلاین شرکتهایی نظیر 7-Eleven، Hannaford Brothers و چندین خردهفروشی دیگر را هک کردند. هدف آنها پیداکردن رخنهای بود که به حلقه کلاهبرداری کارتهای خریدشان امکان جمعآوری اطلاعات کافی برای انجام یک کلاهبرداری بزرگ را بدهد. در روزهای آغازین آن سال، بهلطف هکرهای روسی که در میان آژانسهای امنیتی به هکر ۱ و هکر ۲ مشهور بودند، آنها دستبرد به خزانه اصلی را انجام دادند.
در سال ۲۰۰۶ اعضای یکی از گروههای مجرمانه فروشگاههای آنلاین شرکتهایی نظیر 7-Eleven، Hannaford Brothers و چندین خردهفروشی دیگر را هک کردند. هدف آنها پیداکردن رخنهای بود که به حلقه کلاهبرداری کارتهای خریدشان امکان جمعآوری اطلاعات کافی برای انجام یک کلاهبرداری بزرگ را بدهد. در روزهای آغازین آن سال، بهلطف هکرهای روسی که در میان آژانسهای امنیتی به هکر ۱ و هکر ۲ مشهور بودند، آنها دستبرد به خزانه اصلی را انجام دادند. هکرها که در هلند و کالیفرنیا مستقر بودند، توانستند نقطهضعفی را در سایت سیستم پرداخت هارتلند (Heartland Payment System) پیدا کنند. این سرویس ماهانه 100 میلیون تراکنش را برای حدود 250 هزار مشتری به انجام میرساند. با استفاده از سیستم نفوذی که بهاصطلاح تزریق سیکوئل (SQL Injection) نامیده میشود، توانستند در این شبکه پرداخت آنلاین جای پایی برای خود فراهم کنند و نفوذی را رقم زدند که برای هارتلند زیانی در حدود 12.6 میلیون دلار بههمراه داشت.
مغز متفکر این هک، هکر شناخته شده آلبرت گونزالس بود. این هک به یکی از نمونههای به یادماندنی خرابکاریهایی تبدیل شد که ممکن است در نتیجه نفوذپذیریهای معمولی که در همه کامپیوترهای سرور وجود دارد، اتفاق بیفتد. متخصصان امنیت نرمافزارهای وب مدتها است که درباره هزینهای که این باگها میتوانند برای کسبوکارها بهوجود آورند، هشدار میدهند اما انگار در بیشتر مواقع این هشدارها نادیده گرفته میشوند. با این حال، پس از هک هارتلند، هیچکس نمیتوانست اهمیت کنترل این باگها و میزان خسارت ناشی از آنها را انکار کند. علاوهبر میلیونها دلاری که این حمله به هارتلند ضرر زد، شرکت با از دست دادن اعتبارش در میان مشتریان و سرمایهگذاران نیز زیان قابل ملاحظهای را تجربه کرد.
این حادثه به هیچ وجه رخدادی استثنایی یا غیرمعمول نیست. در سالهای بعد از آن، سایتهای کوچک و بزرگ زیادی در دام چنین حملههایی که ناشی از SQL Injection، Cross-site Scripting و دیگر باگها بودند، گرفتار شدند. این حفرههای کوچک به نفوذکنندگان اجازه میدهد که کدهای مخرب خود را در مرورگر یک کاربر نهایی تزریق کرده یا کل یک وب سرور را در اختیار بگیرند. در ژانویه 2013، حملهکنندگان سایت خبرنگاران بدون مرز را دراختیار گرفته و توانستند بهصورتی مخفیانه بدافزارهایی را روی کامپیوترهای بازدیدکنندگان نصب کنند. حملههایی که از این نفوذپذیریهای ساده استفاده کرده و به مجرمان اجازه آلودهکردن بازدیدکنندگان را میداد به حدی معمول شدهاند که اصطلاح «حملههای راه آب» (watering hole attack) برای آنها مورد استفاده گرفت. این اصطلاح به این دلیل سر زبانها افتاد که هکرها درست مانند شکارچیانی رفتار میکنند که بر سر آبگیرها کمین کرده و منتظر صیدهای تشنهای میمانند که به دنبال چیزی برای نوشیدن میگردند.
احتمالات این است . . .
تمام اینها تنها یک معنی دارد: اگر به تازگی گروهی از متخصصان امنیت سایت شما را بررسی نکردهاند، به احتمال زیاد سایت شما هم میتواند به منبعی برای گسترش آلودگی تبدیل شود. براساس ردهبندی 10 نفوذپذیری مخرب که به تازگی توسط پروژه امنیت نرمافزارهای وب باز OWASP (سرنام Open Web Application Security Project) منتشر شده است، تهدیدهایی که بیش از بقیه سایتها را تهدید میکنند به شرح زیر است:
1- تزریق (Injection)
این نفوذپذیریها زمانی اتفاق میافتند که نرمافزارهای تحت وب ورودیهای کاربر را به همراه سایر دادههای غیرقابل اعتماد برای یک مفسر (Interpreter) مانند یک پایگاه داده SQL ارسال میکنند. حملهکنندگانی نظیر هکرهایی که برای گونزالس کار میکردند، این باگها را به کمک اسکنرهایی یافته و از آنها برای سرقت جدولهای گذرواژهها یا دادههای حساس استفاده میکنند. از این آسیبپذیریها میتوان برای حملههای «رد دسترسی» یا Denial of access یا حتی دراختیارگرفتن کنترل کامل وبسرور استفاده کرد. چنین نفوذپذیریهایی ممکن است آنقدر متعدد باشند که درست همانند علفهای هرز یک باغ ریشهکن کردنشان ناممکن باشد. بهترین روش برای از بین بردن این راههای نفوذ، تکیه بر برنامههای وبی است که ورودیهای کاربر را پیش از ارسال به سرور کنترل و اصلاح کنند. راه مورد علاقه OWASP برای جلوگیری از حملههای تزریقی این است که «از یک API استفاده شود که در کل از مفسر استفاده نمیکند یا نوعی اینترفیس پارامتری برای مفسر بهوجود میآورد.»
2- اسکریپتهای بینسایتی (Cross-site Scripting)
این نوع حملات که به اختصار XSS نامیده میشوند زمانی اتفاق میافتند که برنامههای وب دادههای کاربر را بدون اعتبارسنجی یا حتی صرفنظر از آن دادهها به یک مرورگر ارسال میکنند. حملهکنندگان از این نفوذپذیری استفاده کرده و قطعهکدهای جاوااسکریپتی را ارسال میکنند که کوکیهای مرورگر را میدزدند. کوکیهایی که برای اعتبارسنجی کاربر نهایی برای ورود به حساب کاربری ایمیل یا سایر سرویسهای نیازمند رمزعبور مورد استفاده قرار میگیرند. از این حفرهها میتوان برای دیفیس کردن سایتها نیز استفاده کرده و کاربران را به دیگر سایتها هدایت کرد یا حتی از بدافزارها برای دراختیارگرفتن کنترل مرورگر کاربر کمک گرفت. تنها زمانی میتوان نگرانی از باگهای XSS را فراموش کرد که مطمئن باشیم که تمام دادههایی که کاربر وارد میکند مورد ارزیابی قرار میگیرند یا از آنها صرفنظر میشود و در نتیجه دیگر خطرناک نیستند.
3- اعتبارسنجی از کار افتاده و مدیریت نشست (Broken Authentication and Session Management)
این خطاها بهطور معمول، در برنامههایی وجود دارند که کارشان وارد کردن (Login) کاربر به بخشهای با دسترسی محدود سایت (مثلاً حسابهای ایمیل) است. معمولاً این خطاها در برنامههایی یافت میشوند که بهصورت اختصاصی توسعه داده شدهاند و در آنها اشتباههای حیاتی و خطرناک وجود دارد. مثلاً ممکن است شماره نشست (Session ID) مورد استفاده بهسادگی قابل حدس زدن باشد یا در URL سایت دیده شود. همانطور که نام این دسته نشان میدهد پیامد چنین اشتباهاتی این است که این الگوهای اعتبارسنجی آنطوری که ما فکر میکنیم کار نمیکنند و در نتیجه به حملهکنندگان اجازه میدهند بدون اعتبارسنجی کنترل حسابهای کاربری را دراختیار گرفته و کارهایی را انجام دهند که درواقع یک کاربر مجاز میتواند انجام دهد. مثلاً حملهکننده میتواند دادههای حساس یا ایمیلهای کاربر را پاک کند. بهترین راه در امان ماندن از چنین حفرههایی این است که از الگوها و برنامههایی که بهصورت اختصاصی توسعه مییابند پرهیز کرده و در عوض به برنامههایی روی آورد که قبلاً به صورت کامل امتحان شدهاند.
4- ارجاع مستقیم به شئ ناامن (Insecure Direct Object Reference)
این حفرهها ریشه در برنامههای وبی دارند که در هنگام تولید یک صفحه وب از نام واقعی یا کلید یک شئ در URL صفحه استفاده میکنند. در برخی موارد حملهکنندهها میتوانند با استفاده از این رخنهها و تنها با تغییر دادن متن یک URL مجوزهای قدرتمند مدیر سیستم را دراختیار بگیرند. برای جلوگیری از این خطاها سایتها باید از ارجاعهای غیرمستقیم به اشیا یا ارجاعهای جداگانه برای هر کاربر استفاده کنند، زیرا این ارجاعها قابل دستکاری نیستند.
5- جعل درخواست بینسایتی (Cross-site Request Forgery)
حفرههای CSRF از سایتهای تقلبی برای تولید درخواستهای HTTP جعلی استفاده میکنند تا به کاربرانی که از سایتهای نفوذپذیر بازدید میکنند، حمله کنند. حملهکنندهها از این حفرهها استفاده میکنند تا کاربر نهایی را وادار کنند که در سایتی که در آن وارد شده کارهای ناخواستهای را به اجبار انجام دهد. این آسیبپذیریها میتوانند قربانی را مجبور کنند تا سهواً ایمیلی را پاک کند یا کار دیگری را انجام دهد که انجام آن توسط هکر نیازمند تأیید هویت است. این حملهها بهویژه زمانی که کاربر قربانی مجوزهای مدیریت سیستم را دراختیار داشته باشد، میتوانند بسیار مخرب باشند. برای بستن حفرههای مربوط به CSRF برنامههای وب باید از توکنهای غیرقابل پیشبینی در بدنه (BODY) یا URL هر یک از درخواستهای HTTP استفاده کنند و این توکنها باید در هر نشست کاربر و هر درخواست منحصربهفرد باشند.
6- تنظیمات نادرست امنیتی
این باگها بهطور عمومی، به حملهکنندهها اجازه میدهند به عملکردهای قدرتمند سیستم یا دادههای حساس دسترسی پیدا کنند. این باگها اغلب نتیجه تنظیمات نادرست وب سرورها، برنامههای وبی یا کدهای اختصاصی هستند. مستحکم کردن محیط وب (مثلاً بهروز نگه داشتن سیستمعامل، برنامهها و سایر نرمافزارها)، غیرفعالکردن یا حذف سرویسهای ناخواسته و همچنین از کارانداختن تمام حسابهای کاربری و گذرواژههای پیشفرض از جمله راههای مبارزه با این باگها است.
7- رمزنگاری نا امن سیستم ذخیرهسازی
این مجموعه شامل نمونه باگهایی است که بهتازگی برخی متخصصان امنیتی در سرویس ذخیرهسازی ابری کیم دات کام یعنی Mega کشف کردهاند. سیستم ذخیرهسازی رمزنگاریشده ناامن ممکن است شکلهای مختلفی به خود بگیرد. از موفق نبودن در رمزنگاری اطلاعات کارتهای اعتباری یا سایر دادههای حساس گرفته تا استفاده از پیادهسازیهای ناامن رمزنگاری که به حملهکنندگان اجازه میدهد محتوای رمزنگاری شده را رمزگشایی کنند. Mega با ناتوانی در امن نگاه داشتن کلید مورد استفاده در الگوریتم برخی از کدهای رمزنگاریاش، درس مهمی را در زمینه ذخیرهسازی رمزنگاری شده به توسعهدهندگان وب داد. یکی دیگر از بیتوجهیهای مهمی که در این زمینه اتفاق میافتد، مشکل در حفاظت از پایگاههای داده حاوی گذرواژههای کاربران سایت در زمانی است که یک سایت مورد نفوذ قرار میگیرد. با اینکه هشکردن گذرواژهها برای رمزنگاری الزامی است، اما به تنهایی کافی نیست. نکته مهم دیگر این است که الگوریتم استفاده شده بهصورت اختصاصی برای رمزنگاری گذرواژهها طراحی شده باشد. الگوریتمهایی نظیر Bcrypt، PBKDF2 یا SHA512crypt انتخابهای خوبی هستند. اما نمونههایی نظیر SHA1 ،SHA3 و MD5 چندان مناسب نیستند. (نکته: یکی دیگر از روشهای دفاع اساسی این است که به جز در موارد ضروری از اطلاعات کارتهای اعتباری و سایر اطلاعات حساس صرفنظر کنیم.)
8- ناتوانی در محدود کردن دسترسی URL
این خطاها زمانی اتفاق میافتند که یک برنامه به درستی از درخواستهای دریافت صفحات محافظت نکند. این وضعیت به کاربران غیرمجاز اجازه میدهد که با دستکاری URL به صفحاتی که برایشان ممنوع است دسترسی پیدا کنند. زمانی که حملهکننده از چنین حفرهای استفاده کند، میتواند تمام کارهایی را که در حدود مجوزهای کاربر مجاز قرار دارند به انجام برساند. راههای مختلفی برای برطرفکردن چنین مشکلاتی وجود دارد که از جمله آنها میتوان به استفاده از اجزای مربوط به اعتبارسنجی در خارج از برنامه وب در حال اجرا اشاره کرد.
9- حفاظت ناکافی از لایه نقلوانتقال شبکه (Transport Layer)
پروتکل SSL (سرنام Secure Sockets Layer) و دیگر نمونه مشابهاش یعنی TLS (سرنام Transport Layer Security) در واقع مبنای تمام رمزنگاریهایی هستند که برای اعتبارسنجی سایتها و رمزنگاری دادههای جابهجا شده میان آنها و کاربر نهایی، مورد استفاده قرار میگیرند. نکته عجیب اینجا است که این پروتکلها اغلب بهدرستی مورد استفاده قرار نمیگیرند. بهعنوان مثال، سرویس هاتمیل مایکروسافت تازه در نوامبر سال گذشته بود که امکان امن کردن کل نشست سیستم ایمیل تحت وب از طریق SSL را برای کاربران فراهم کرد. تا پیش از آن کاربران پس از عبور از صفحه لاگین، راهی برای حفاظت از نشست خود در برابر حملههای man-in-the-middle نداشتند. اما وجود نداشتن یک سیستم حفاظتی SSL یا TLS از ابتدا تا انتهای مسیر تنها یکی از نمونههای محافظت ناکافی از لایه نقل و انتقال شبکه است. کوکیهای مرورگرها که برای اعتبارسنجی و سایر موارد حساس مورد استفاده قرار میگیرند، باید از یک flag امن استفاده کنند. همچنین گواهیهای تأیید اعتبار (Certificateها) نباید توسط خود سایت استفاده کننده امضا شده باشند و همچنین نباید به آنها اجازه انقضا داده شود.
از همه مهمتر اینکه پیادهسازیهای SSL و TLS باید در برابر انواع حملههای جدیدی که در چند سال اخیر انجام شدهاند مقاوم باشند. بهعنوان نمونهای از این حملهها میتوان به حملههای مذاکره دوباره (Renegotiation Attack) و حفرهای که Beast نامیده میشود اشاره کرد. SSL Pulse سایتی است که توسط شرکت امنیتی Qualys پشتیبانی میشود و کارایی حدود دویستهزار سایت پرکاربردی را که از SSL استفاده میکنند، پایش میکند. به گزارش این سایت، متأسفانه تخمین زده میشود که حدود دو سوم سایتهایی که از SSL و TLS استفاده میکنند، هنوز در برابر Beast مقاوم نشدهاند.
10- ارجاع و انتقال نامعتبر (Unvalidated redirects and forwards)
باگهای این دسته باعث میشوند که بازدیدکنندگان به سایر بخشهای یک سایت یا سایتی در کل متفاوت هدایت شوند. در طی این فرآیند آنها در معرض حملههای فیشینگ یا توزیعکنندگان بدافزارها قرار میگیرند. این توزیعکنندگان بدافزار اغلب با لینکی به سایتهای مشهور مثلاً گوگل یا بانک امریکا، کاربران را فریفته و آنها را به سایتهای آلوده هدایت میکنند. (شکل۳)
تصور کنید که نفوذپذیر هستید
با پیچیدگی فزاینده سرورها و برنامههای وب خوانندگان این مقاله باید این طور فرض کنند که سایتشان حداقل در معرض برخی از آسیبپذیریهایی که به آنها اشاره کردیم قرار دارد. به این ترتیب، ارزشمندترین داراییهای تجاری شما تنها چند کلیک با دانلود شدن توسط مجرمان سختکوش یا نفوذگران فاصله دارد. اگر فکر میکنید این مطلب اغراقآمیز است، نگاهی به داستان هشداردهنده HBGary Federal بیاندازید. این شرکت حدود دو سال پیش توسط اعضای گروه انانیموس هک شد. با این که خود این شرکت سرویسهای امنیت وب را به شرکتهای معتبر فهرست فورچون ۵۰۰ و آژانسهای دولتی عرضه میکرد، چندان به امن کردن سایت خودش توجه نکرده بود. سیستم مدیریت محتوای این سایت در برابر حملههای تزریق SQL آسیبپذیر بود و به لینکهای به ظاهر بیضرری مانند http://www.hbgaryfederal.com/pages.php?pageNav=2&page=27 اجازه میداد که کوئریهای اعتبارسنجی نشدهای را روی پایگاه داده سایت اجرا کنند. در نتیجه پایگاه داده لیستی از نامهای کاربری، آدرسهای ایمیل و هشهای گذرواژهها را بیرون میریخت که متعلق به کارکنان برخی از قدرتمندترین سازمانهای دنیا بودند. اگر سیستم مدیریت محتوای مورد استفاده در برابر حملههای تزریقی امن شده بود، شاید نفوذ به صورت کامل هیچگاه امکانپذیر (یا حداقل ویرانکننده) نمیبود.برای بدتر کردن اوضاع هشهای گذرواژه لو رفته با الگوریتم MD5 رمزنگاری شده بودند، الگوریتمی که متخصصان امنیتی مدتها است اشاره میکنند که برای نگهداری گذرواژهها اصلاً مناسب نیست. دلیل این امر آن است که این الگوریتمها سریع بوده و به محاسبات چندان احتیاج ندارند و همین باعث میشود که شکستن این هشها بسیار سادهتر شود.
هدف این نیست که HBGary را مورد انتقاد قرار دهیم، بلکه هدف این است که آسیبپذیری سایتها استثنا نیست بلکه یک قاعده عمومی است! اگر شرکتی که در زمینه امنیت فعالیت میکند میتواند چنین اشتباهاتی را مرتکب شود، تصور کنید که اوضاع در یک استارتآپ در حوزه تجارتالکترونیک یا برنامهنویسی موبایل چگونه خواهد بود! مشکلات سایتها علاوهبر اینکه اسرار تجاری و سایر دادههای اختصاصی را در معرض خطر قرار میدهند، اعتبار یک شرکت را نیز (با دلایلی واضح و روشن) از بین میبرند. یک سایت ناامن علاوهبر آسیبی که متوجه بازدیدکنندگانش میکند، میتواند تعداد بیشماری از کاربران اینترنت که حتی درباره شما چیزی نشنیدهاند را نیز تهدید کند. زیرا در بیشتر موارد، سایتهای نفوذپذیر برای انجام حملات سیادی، توزیع بدافزار و سایر انواع حملهها مورد استفاده واقع میشود.
بهیقین مهمترین کاری که یک مدیر وب میتواند برای مستحکم نگهداشتن یک سایت انجام دهد به روز نگهداشتن سیستمعامل و کل برنامههای در حال اجرا روی آن است. بهروز نگه داشتن در اینجا یعنی تمام وصلههای امنیتی ظرف ۲۴ ساعت یا کمتر نصب شوند. اما به درنظر گرفتن، پیچیدگی پلتفرمهای اغلب سایتها، نصب وصلهها به تنهایی کافی نیست. لازم است که ادمینها نیز در زمینه امنیت مهارتهایی را کسب کنند. OWASP محل خوبی برای شروع این کار است.درنهایت، بررسیهای دورهای و منظم توسط شرکتهای تخصصی حوزه امنیت برای سایتهایی که اطلاعات گذرواژهها، کارتهای اعتباری و سایر دادههای حساس را نگهداری میکنند، یک الزام است. اینترنت پر از سایتهایی مانند هارتلند و HBGary است. چیدن علفهای هرزی که آنها را به دردسر انداخت ساده نیست، اما ارزشش را دارد.