امنیت حسابهای اجتماعی

امروز صبح در تلگرام پیامی برای من فوروارد شد که حاوی یک اسکرین شات از توییت خود شرکت توییتر بود. این اسکرین شات :

همونطوری که می‌بینید، توییتر میگه یک باگ پیدا کردن که باعث شده یک سری پسوردها، بدون این که ماسک بشن، لاگ شدن. یعنی چی؟

فرض کنیم ما یک پسورد میسازیم، پسورد ما موقعی که داریم وارد میکنیم یک چیزی مثل MySecurePassword@123456 عه. این پسورد تقریبا تمام فاکتورهای یک پسورد امن رو داره. ولی اگر به صورت Plain Text بخوایم ذخیره‌ش کنیم این که جای خود، یک میلیون کارکتر دیگر هم داشته باشه احتمال لو رفتنش بسیار بالاست. (داخل پرانتز عرض کنم خدمت آقای علیرضا شیرازی، مدیریت محترم بلاگفا که تا چند سال پیش هم همینطوری پسورد ها رو نگهداری میکرد، جای این که در توییتر و … ملت رو بخاطر مواخذه کردنتون بلاک کنید، پاسخ میدادید که چرا اینطور بود! چون همون موقع هم بسیاری از اسکریپت های مدیریت محتوا پسوردها رو ماسک می‌کردن!).
حالا بخوایم MySecurePassword@123456 رو در دیتابیسی ذخیره کنیم باید چه کنیم؟ باید از «هش» و الگوریتم های مربوطه استفاده کنیم. مثلا الگوریتم MD5 (لینک جهت مطالعه). حالا این عبارت نسبتا سخت رو من با کمک ابزارهایی که دم دستم بود به MD5 هش میکنم و نتیجه میشه :

23b7618b2a23e171e6cda057a9736423

و وقتی من پسورد رو وارد کنم، اسکریپتی که برای لاگین نوشتم، یا API ای که وظیفه لاگین کردن من رو برعهده میگیره، اول پسورد رو هش میکنه بعد در دیتابیسش چک میکنه و اگر هش یکی بود، اجازه میده من به سیستم دسترسی داشته باشم. برای مثال این یک سیستم لاگین بسیار ساده بود که خودم نوشته بودم :

کد   
post '/welcome' do
 begin 
  params[:user][:password] == params[:user][:password_again]
  user = User.create(:username => params[:user][:username], :password => Digest::MD5.hexdigest(params[:user][:password]))
  redirect to("/welcome")
 rescue
  redirect to("/signup_error")
 end
end

و این یعنی ذخیره ایمن پسورد در یک دیتابیس (در اینجا از دیتابیس های مونگو استفاده کردم). و حالا اگر اون قسمتی که مربوط به هش کردن پسورد نمیشد رو، در کد قرار میدادم چه میشد؟ وقتی قرار بود Query بزنم مثلا به یوزر mamad و پسوردش 1125 بود، اینطور بر میگردوند :

کد   
{
"username":"mamad", 
"password":"1125"
}

و مثلا اگر شما قرار بود با API ای که من برای عضوگیری سرویس نوشتم کار کنید (مثلا لاگین کردن به وسیله سرویس من در اپلیکیشن، بازی یا سیستم حضور غیاب و … )، پسوردها رو به سادگی میتونستید ببینید. اما چیزی که الان بر میگرده اینه :

کد   
{"username":"mamad","password":"c21002f464c5fc5bee3b98ced83963b8"}

و خب شما نمیتونید به پسورد دسترسی پیدا کنید، مگر این که ابزار یا دیکشنری مربوط به شکستن این الگوریتم رو داشته باشید. البته معمول هم نیست شما JSON مربوط به اطلاعات کاربران رو برگردونید! چون باز هم دیتای کاربر به خطر میفته.

فکر کنم به قدر کافی در مورد پسورد و نحوه ذخیره سازیش توضیح داده باشم، هدف این بود که مباحثی مربوط به هک شدن و نفوذ به تلگرام هم در این پست مطرح کنم که متاسفانه این پست بیش از چیزی که فکر کردم، طولانی شد. پس در مورد تلگرام در پست جداگانه ای خواهم نوشت 🙂

 

Share

اقتصاد رمزپولی و ویرگول؛ بازگشت وبلاگ نویسی

دوباره خواستم وبلاگ نویسی کنم، اینبار دلیلی مضاعف برای نوشتن داشتم؛ موجی که در توییتر شاهدش بودم به اسم «چالش وبلاگ نویسی» که خب، شخصا برای من جالب بود که مردم دوست داشتند از کانالهای تلگرامی و اکانتهای مجازی دیگر، دوباره به تریبون های اختصاصی خودشون یعنی «وبلاگ» برگردند.
این به معنی این نیست که توییتر یا فیسبوک یا اینستاگرام؛ تریبون اختصاصی نیست، اما پر از محدودیت هستند. حداقلش اینه که برای نوشتن متن یا کپشن و … ، محدودیت کرکتری داریم.

از اینها که بگذریم، چرا اصلا این عنوان رو برای مطلب انتخاب کردم؟ دلیل خاصی نداشت و واقعا هم قصد نداشتم که وارد مباحث تحلیلی و پیچیده «رمزپول» ها بشم، ولی دوست داشتم یکی دو تا از مطالب روز که در فضای وب فارسی هم خیلی مطرح هستند رو پوشش بدم. اولیش هم همین «رمزپول» یا پولهای دیجیتالی مثل بیت‌کوین و اتریوم و مونرو و … .
چیزی که برای من در این زمینه خیلی جالب شده، اینه که کم کم اقتصاد داره به سمت معامله با این پولها میره و پولهای کلاسیک – که یعنی یک پشتوانه پر ارزش داشتند، اون هم در خزانه ها و بانکهای بزرگ کشورها – کم کم کنار زده میشن. کم‌کم، سرویسهای آنلاینی که ازشون خرید میکنیم (یا چیزی رو روی اونها میفروشیم) هم دارند قبول می‌کنند که این پولها رو هم در کنار پولهای کلاسیک بپذیرند.
خب چیزی که واضحه، این پولها احتمالا توجه تاجران و سرمایه داران بزرگ هم به خودشون جذب میکنن و این یعنی جایگزین شدنشون با پولهای بین المللی و احتمالا به شکل قابل توجهی «جهان‌وطنی» شدن صنعت و تجارت (باز هم در انحصار عده‌ای خاص؟).
البته ما ، بعنوان جوامع گیک و نِرد هم صرفا این پولها رو مطالعه میکنیم، کاوش (ماین) میکنیم و بعضا ممکنه برای خرید و فروشهای ساده (مثل همونایی که از داخل یا خارج امکان معامله‌شون نیست، مثل خرید نرم افزار یا سرویس) استفاده‌شون کنیم و همین باعث شده که زندگی جماعت گیک حداقل کمی بهتر بشه.

و اما ویرگول! درست همین «،» ساده که هیچوقت نفهمیدیم ویرگول اسم درستشه یا کاما، شده اسم یک سرویس ایرانی برای میکروبلاگینگ (لینک) و بسیاری از وبلاگ نویسهای قدیمی که در «وبلاگستان» فعال بودند، دوباره سمتش اومدند و شروع کردن به نوشتن.
چه اونهایی که پست های مینیمال دو سه خطی می‌نوشتند، چه اونهایی که مثل من عادت به روده‌درازی و طومار نویسی داشتند. بهرحال تریبون کسانی که به دور از فیسبوک و توییتر و … میخوان که شنیده و دیده و خونده بشن، همین وبلاگهاست. همین فضاهای چند مگابایتی روی اینترنت!
از ظهور ویرگول خوشحال شدم، چون خیلی وقت پیش تلگراف (لینک) رو دیده بودم که عموما به زبان انگلیسی می‌نویسند (چندین پست از پاول دوروف، مدیرعامل تلگرام اونجا خوندم) و فهمیدم یک شکل جدید از وبلاگ نویسی رو به بازار عرضه کرده، در این فکر بودم که چرا فارسیش نیست؟ و حتی به فکر پیاده سازی یکی از اونها افتادم که دیدم ویرگول به خوبی و زیبایی پیاده سازی شده.

خلاصه، این یک مطلب طولانی و شاید غیرعلمی بود که پس از مدتها نوشتم، برای نویسندگی در وبلاگ برنامه های زیادی دارم 🙂

Share

مرگ وبلاگ نویسی، گشت و گذاری در سرویس های وبلاگ فارسی

شاید حدود ۱۰ سال پیش، وقتی به تازگی وارد ۱۲ سالگی شده بودم، شروع به ساخت وبلاگ در یکی از قدیمی ترین سرویس های وبلاگدهی فارسی، یعنی بلاگفا کردم. بلاگفایی که تا همین یکی دو سال پیش، به معنای واقعی از پرترافیک ترین وبسایت های فارسی به شمار میرفت.
دقیقا همان روزها، بلاگفا در صفحه اصلیش، دست کم دو تبلیغ نشان میداد، اخبارش و وبلاگ های بروز شده را لیست می‌کرد و گهگاه در شکل خبرهای فوری، امکانات حذف یا اضافه شده به سیستمش رو اطلاع رسانی می‌کرد. به این شکل مثلا فهمیدیم که مدتی blogfa.ir هم در دسترسه، و هر وبلاگی که شما بسازید هم در زیردامنه blogfa.com و هم blogfa.ir قرار میگیره.
البته، آن روزها پرشین بلاگ (قدیمی ترین سیستم بلاگدهی فارسی) و بلاگ اسکای و … هم رونق زیادی داشتند. در واقع، هرکس که میتونست هزینه های یک سرویس بلاگدهی (بخاطر سرور و منابع بالایی که نیاز داره و … ) رو تامین کنه و دانشی از برنامه نویسی وب داشت، یک سیستم بلاگدهی بالا میاورد. اما اونهایی که خیلی مطرح بودند، همین بلاگفا و بلاگ اسکای و پرشین بلاگ بودند.
دوستانی هم بودند که ترجیح میدادند – علیرغم فیلترینگ – از سرویس هایی مثل وردپرس یا بلاگر استفاده کنند، و ما هم با سختی و زحمت هایی که اون زمان برای عبور از سد داشتیم، وبلاگ ها رو میخوندیم و گهگداری هم اینتراکشنی داشتیم.

اما الان چه بلایی سر بلاگ ها اومده؟ امروز بعد از چند سال صفحه اصلی بلاگفا رو باز کردم! دیدم دیگه خبری از اخبار و لیست بلاگهای بروز شده نیست، همه‌ش شده لینک در صفحه اصلی، و صفحه اصلی صرفا شده یه محل برای لاگین کردن وبلاگ نویس ها!
لیست وبلاگ های بروز شده رو باز کردم و یکی دو تا وبلاگ رو خوندم، یکیشون دقیقا همین دهم آبان ویرایش شده بود و یکی هم حدود سه روز پیش. قبلا، این بروزرسانی ها، ساعتی بود. مثلا الان لیست رو میخوندیم، میدیدیم که در ۴ ساعت گذشته دست کم ۱۰ وبلاگ بروزرسانی شدند، اما الان این اختلافها به روز رسیدند!

گرچه، دلیل «مرگ وبلاگ نویسی» مشخصه، دیگه کسی نمیره از بلاگفا سرویس بگیره و بلاگ بنویسه، معمولا یه کانال تلگرامی میزنن و حرفاشون رو اونجا میزنن، دریغ از این که نمیدونن موندگار نیست، حداقل اونقدری که وبلاگ های روی بلاگفا هستند!

Share

به بهانه سه سالگی!

امروز وقتی داشتم هاست و دامنه رو تمدید میکردم، به تاریخ اولین فاکتور نگاه کردم، مرداد ماه ۹۱ اولین فاکتور بود و چهارمین فاکتور رو در چهارمین سال فعالیتم در وبلاگ نویسی، پرداخت کردم. با خودم گفتم چقدر سریع گذشت! حالا نمیخوام وارد ناله ها و بحث های فلسفی و خسته کنندگی همیشگی بشم. بیاید به وبلاگ، یه طور دیگه تبریک بگیم! تاحالا فکر کردید چرا اولین رشته ای که در یادگیری برنامه نویسی چاپ میکنید Happy Birthday نیست؟ خب بیاید این رو امروز چاپ کنیم! چندین زبان متفاوت از زبان هایی که قبلا در موردش بحث کردیم، امروز سوژه پستمونن. زبان هایی که مدت زیادی سراغشون نرفته بودم، یا تازه باهاشون آشنا شدم. این هم میتونه بهانه خوبی باشه برای کمی کد زدن 🙂

۱. Lua

کد   
print('Happy Birthday!')

۲. Scheme

کد   
(display "Happy Birthday!")

۳. Erlang

کد   
io:fwrite("Happy Birthday").

۴. Javascript

کد   
alert("Happy Birthday");

۵. bash

کد   
echo "Happy Birthday"

بله و این هم زبان های جا افتاده و یا زبانهایی که برام نا آشنا بودن و تازه باهاشون آشنا شدم (البته فقط Scheme چنین حالتی رو برام داشت). توی این سه سال کلی بحث و مطلب و … از این بلاگ اومد بیرون، در کنارش، مدت نسبتا زیادی که به لطف مبین نت دوست داشتنی، نت درست و حسابی نداشتم، وبلاگ رول توییتر من رو هم داشت 😀 . حالا همه چیز رو به جای خود دارم استفاده میکنم، وبلاگ و توییتر و فیسبوک و … . یه سری کارها هم بود که قرار بود بعد از «کنکور» انجام بدم، خب الانم بعد کنکوره (تا زمانی که دوباره بخوام کنکور بدم برای ارشد 😀 ) و خب وقت زیاده برای انجامشون. چیزایی مثل پادکست و ویدئو کست و … . و در آخر هم تشکر میکنم از همه کسایی که این وبلاگ رو توی این ۳ سال، دنبال کردن و خوندن 🙂

 

Share

از حالا، پست ها در گوگل پلاس!

گوگل ، که یکی از بزرگترین کمپانی های دنیای تکنولوژی محسوب میشه، یک شبکه اجتماعی شناخته شده به اسم گوگل پلاس داره. من مدتی در این شبکه فعال بودم، ولی بعد رهاش کردم ، تا این که دوباره تصمیم گرفتم درونش فعالیت کنم، و خب افزونه جت پک هم این اجازه رو به من میده تا پست های وبلاگ رو اتوماتیک به شبکه های اجتماعی مختلف ارسال کنم. پس در نتیجه، با اتصال وبلاگ به گوگل پلاس، فعالیت خودم رو در گوگل پلاس رسما آغاز کردم. این هم آدرس گوگل پلاس خودم. (بر خلاف فیسبوک و توییتر، در گوگل پلاس صفحه جداگانه ای ایجاد نکردم).

Share

چه افزونه هایی را روی وردپرس نصب کنیم؟

اگر قصد دارید وبلاگ نویسی کنید، من به شما استفاده از وردپرس رو به عنوان سیستم مدیریت محتوا (CMS) پیشنهاد میکنم. اما، چند تا مشکل بزرگ پیش روی هر وردپرس کار یا بهتر بگم هر وبلاگ نویسی هست. من، اینجا چند تا از این مشکلات رو لیست کردم و بعد راه حل هاش رو با استفاده از پلاگین مطرح کردم 🙂

مشکلات پیش روی ما چه هستند؟

کامنت های اسپم

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

پست شدن اتوماتیک مطالب در شبکه اجتماعی

من به عنوان یک وبلاگ نویس، اول تصمیم گرفتم که در فیسبوک یک صفحه بسازم، ولی اولین مشکلی که داشتم، این بود که مجبور بودم مطالب رو دستی بزارم توی فیسبوک. بعدش که توییتر وبلاگ رو ساختم، مشکل دوتا شد. از طرفی، توییتر محدودیت کاراکتر هم داره که اوضاع رو به خودی خود، بدتر میکنه!!!

کدام افزونه ها مشکلات من رو حل کردند؟

Akismet

این افزونه، یک اسپم کنترلر فوق العادس. خوبی این افزونه اینه که همراه خود وردپرس نصب شده، و کار وب مستر رو راحت تر میکنه. فقط نیاز دارید که بعد از فعال سازی، از سایت وردپرس یک API Key دریافت کنید و به افزونه بدید.

WP to Twitter

این افزونه، مطالب وبلاگ رو اتوماتیک روی توییتر پست میکنه. البته، روش کار اینطوری هست که شما افزونه رو نصب و فعال میکنید، با اکانت مورد نظر یک اپلیکیشن در توییتر میسازید که کانکت میشه به وبلاگ شما و هر پستی که میزنید، در یک توییت روی تایم لاین شما قرار میگیره.

Jetpack

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

افزونه های بیشتر

من از افزونه های Site Closed برای بستن ایندکس سایت و همچنین Page Links To برای ساخت صفحه هایی که در واقع لینک هستن، استفاده میکنم 🙂

خب، سعی کردم توی این پست هر چیزی که لازم هست رو بگم، از همه مهم تر این که اهمیت افزونه های مختلف برای یک وبلاگ نویس و بویژه یک وردپرس کار رو هم مشخص کنم 🙂

 

Share

چالشی برای زندگی بهتر

خب، اول بزارید بگم که چه کسی این ایده رو شروع کرد، بله، آرش میلانی در وبلاگش خودش رو به چالش کشید تا سرویسی ارائه کنه تا بتونه از صفر، به پنج میلیون تومان در ماه برسه. خب در این راه خیلی کارها انجام شده، خیلی ها به آرش ایمیل زدند و بهش ایده دادن و خیلی ها هم مثل من خواستن خودشون رو در کنار آرش، به چالش بکشن. یکی از بهترین اقدامات انجام شده توسط کامیونیتی، ساخت هشتگ مخصوص به این چالش در توییتر بود. این یکی از بهترین جنبه های این قضیه بود. خب جریان از چه قراره؟ قرار هست سرویسی تحت وب ارائه کنیم که به عبارتی بترکونه، یعنی از صفر تومان در ماه، به پنج میلیون تومان در ماه برسه و خب طبیعتا توی مدت شش ماهه حق دونیشن گرفتن نداریم (البته اشاره ای به این که میشه تبلیغ کرد نشده، پس میتونیم آزادانه تبلیغ کنیم).

خب، ایده رو باید چجوری پرداخت؟ یه مطلب خیلی قدیمی توی وبلاگ خودم هست، و میگه چرا ایده های ما مسخره هستند. همه میتونن ایده پرداز باشن، ولی یکی از خواص جوامع بزرگ اینه که «همه لازم نیست یه چیزی رو بدونن» یا «همه لازم نیست متخصص امری باشن». خیلی خوب، اگر دوست دارید ایده پرداز خوبی باشید از مسخره شدن نترسید و به IranDevChallenge بپیوندید.

من خودم اعلام کردم که در این چالش شرکت میکنم. یعنی خودم رو به چالش میکشم و سرویسی رو پیاده میکنم. حالا سرویس چطوری قراره پیاده بشه؟ (البته راه طولانی هست و مطمئنا دهنم هم در کنار این سرویس، سرویس میشه 😀 ) من هنوز ایدم رو نتونستم به طور کامل بپزم. در واقع ایده من داره قل های اول رو میزنه و هر وقت به جوش اومد باید بنویسم، رسم کنم، سرچ کنم و پیاده سازی کنم، چون اصولا ما اول چیزی که در ذهن داریم رو می نویسیم ، بعدش شکل مورد نظرمون رو رسم میکنیم به تحقیق و سرچ کردن در موردش میپردازیم، و بعد پیاده سازی میکنیم. در واقع چندین مرحله رو میگذرونیم و بعد میرسیم به اون چیزی که در ذهن میساختیم.

موفق باشید!

Share