<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های سعید شیخی</title>
        <link>https://virgool.io/feed/@SaeedSheikhi</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-17 08:26:06</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/40632/avatar/ScrQCg.png?height=120&amp;width=120</url>
            <title>سعید شیخی</title>
            <link>https://virgool.io/@SaeedSheikhi</link>
        </image>

                    <item>
                <title>از حفره‌ی آپلود فایل تا جوان جویای‌نام</title>
                <link>https://virgool.io/@SaeedSheikhi/%D8%A7%D8%B2-%D8%AD%D9%81%D8%B1%D9%87-%DB%8C-%D8%A2%D9%BE%D9%84%D9%88%D8%AF-%D9%81%D8%A7%DB%8C%D9%84-%D8%AA%D8%A7-%D8%AC%D9%88%D8%A7%D9%86-%D8%AC%D9%88%DB%8C%D8%A7%DB%8C-%D9%86%D8%A7%D9%85-lmoxiqake22w</link>
                <description>همه فکر میکنن حفره‌ی امنیتی بیشتر مال فیلم‌هاس یا کدبیس‌های خیلی بزرگ مثل تلگرام و فیسبوک، ولی داستان اینجاس که روی یه فایل آپلود ۱۰ خطی ممکنه یه حفره به وجود بیاد، البته شاید هم دو تا =).داستان از آپلود کردن فایل‌های نامتعارف بجای عکس پروفایل شروع میشه، توی داستان ما دوستی طبق رسوم باگی رو هانت کردن و برای گزارشش باید bounty به شخص باگ‌هانتر تقدیم بشه، بسیار هم عالی. گفته شد حتی اگر access رایت گرفته شده باشه خیلی ارزشمنده،شرایط قبول شد و خیلی ساده بود. باگ ارسال شد، حفره‌ی آپلود فایل غیر از عکس یا به عبارتی آپلود کد مخرب بود، که شما میتونی mimetype فایل‌ رو عوض کنی و اسکریپتی رو آپلود کنی روی سرور.از اونجایی که استک سرور php نبود، مطابق بات‌های attacker ران کردن php روی سرور خورد توی دیوار، از طرف دیگه اسکریپت htmlی که باگ‌هانتر داستان ما آپلود کرده بودن JS بود و این زبون توی مرورگر قدرت داره نه سرور، توی سرور هم برای استفاده ازش باید از shell دستور اجرای Node فراخوانی بشه.میرسیم به داستان آپلود کردن شل اسکریپت که حقیقتا ترسناکه، ولی خوب از اونجایی که میکروسرویس بود و سرویس آپلود و بقیه کانتیتر‌های جدا بودن دسترسی root و پراسس هایپروایزر و نمیگرفت و پایین نمیرفت، ولی هنوز sh آپلود کردن داستانه =))البته خیلی داستان جالب میشد که بتونن رو استک React/Nodeی که ما داشتیم سطح دسترسی بگیرن، ولی خوب چندبار که گفتم میتونین با فایل آپلود سطح دسترسی بگیرید یا نه با حرفایی آلوده به شوآف و XSS گویان صحنه رو ترک کردن و یکم چیز بار ما هم کردن :)))) نمیدونم چرا به دوستمون برخورد یا چیز دیگه ولی حس میکنم خاطره‌ی خوبی از کار کردن با مجموعه‌ها قبلی نداشتن و کاملا تدافعی با ما برخورد کردن ( بگذریم که ریئکت در مقابل XSS مقاومه )ماحصل داستان ما بهبود Regexp فایل فیلتر بود، طبق عرف هم از باگ‌هانتر عزیز چند مرتبه درخواست شد Bounty پیشنهادیش رو بگه برای پیشکش کردن در مقابل این قبیل حرکت‌های ارزشمند،‌ ولی خوب نمیدونم چرا آخر داستان دوستمون ناراحت شدن و رفتن [ منو &quot;جوان جویای‌نام&quot; نامید و بلاک کرد =) ]، وجود اخلاق حرفه‌ای و سافت‌اسکیل در این کار از شروط ادامه‌ی راهه،‌ مخصوصا اینکه شما داری یه باگ و گزارش میدی حلوا خیرات نمیکنی :))))در نهایت در هر استکی که هستید مخصوصا php دوستان حتما روی فایل فیلترهاتون strict کار کنید اجازه ندید mimetype خارج از کنترل شما آپلود شه،‌ یعنی بهتره صراحتا mimetype های ساپورت شده رو توی بلاک ifتون بذاری، نه mimetypeهای ساپورت نشده.و اینکه کیلویی یه directory رو پابلیک نکنید توی وب‌سرور که قابلیت Directory Traversal پیش نیاد :)))در نهایت اگر باگ‌هانتر عزیز این متن و مطالعه میکنه میتونن با ارسال اطلاعات بانکی و پستی خودشون به ایمیل SaeedSheikhi@outlook.com بانتی خودشون رو دریافت کنن :)))) هر چند ناقابل و کوچیک</description>
                <category>سعید شیخی</category>
                <author>سعید شیخی</author>
                <pubDate>Thu, 15 Aug 2019 14:06:45 +0430</pubDate>
            </item>
                    <item>
                <title>پایداری برنامه‌های iOS، مرگ یک آرزو</title>
                <link>https://virgool.io/@SaeedSheikhi/%D9%BE%D8%A7%DB%8C%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%87%D8%A7%DB%8C-ios-%D9%85%D8%B1%DA%AF-%DB%8C%DA%A9-%D8%A2%D8%B1%D8%B2%D9%88-pkjtn2odvqhp</link>
                <description>خوب امشب بعد از دومین ریوک سنگین اپل میخوام یه چرک نویس از داستان اپل براتون بنویسم که جواب اکثر سوال‌هاتون رو بگیرید.به عنوان کسی که ۶ سال توی iOS بودم و بزرگ شدم، ۲ سال اخیر وقتمو روی اناردونی یه مارکت iOS گذاشتم میخوام بگم این قبر توش مرده نیست عزیزان بالای سرش گریه نکنیداول اگه داستان ریوک/کرش شدن برنامه‌های خارج از اپ‌استور رو نمیدونید مقاله زیر رو ببینید که ادامه‌ی بحث براتون روشن‌تر باشه https://virgool.io/@SaeedSheikhi/%DA%86%D8%B1%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D9%85%D8%AF%D8%AA%DB%8C-%D8%A8%D8%A7%D8%B2-%D9%86%D9%85%DB%8C%D8%B4%D9%88%D9%86%D8%AF-uz5hrosbj5lq خوب این مقاله رو که خوندید میرسیم به اینکه آقا چرا اپل اصلا اینجور میکنه؟ کوتاه بگم، بخاطر &quot;پول&quot;صرفا یک طرفه به قاضی رفتن نیست این حرف، توسعه‌دهنده‌های خارج از ایران هم دل خوشی از اپل ندارن. بخوام مثال بگم چند روز پیش یه مقاله از دردودل یه توسعه‌دهنده‌ی یک برنامه‌ی Ad Blocker  میخوندم که دلش از دست اپل خون بود، برنامه‌ی محبوبی بوده و فروش خوبی توی اپ‌استور داشته ولی اپل اجازه‌ی آپدیت دیگه بهش نمیده. بله درسته اجازه‌ی آپدیت دیگه بهش داده نشده. برنامه ایرانی نیستا :)) خارجیه و از آپدیت شدن منع شده حالا چرا:Here is their exact answer:Guideline 2.5.1 - Performance - Software RequirementsYour app uses a VPN profile to block ads or other content in a third-party app, which is not allowed on the App Store.وقتی میگیم همه‌ی بلاها و گرفتاری از سر سود بیشتره بیراه نیست،  واقعا اپل و شرکت‌های دیگه تمایل ندارن که راه درآمدشون بسته یا کم یا باریک یا هرچیزی بشه :))، کاری به ذات موضوع ندارم ولی حداقل کار اینه که به کاربر اختیار داده بشه که چی نصب کنه. [یکم فاز ریچارد استالمن برداشتم]حالا اینکه هرروز یه مارکت iOS جدید با شعار دهن پرکن جدیدی بیاد که ما کرش نمیشیم، شاید خنده دار باشه. به شخصه از روزی که به دوستان و عزیزان جواب میدادم در مقابل این سوال که آیا شما هم بسته میشید یا نه میگفتم: آره، دیر و زود داره ولی سوخت و سوز نداره. تا این لحظه که دارم این متن و مینویسم ساعت ۴ بامداد جمعه ۲۳ فروردین ۹۸ هر ادعایی مبنی بر وجود سیستمی خارج از اپ‌استور و گایدلاین‌هاش که پایدار باشه برای انتشار برنامه‌ها، کذب محضه.خیلیا میگن راه ad-hoc هست، ولی حرف آخر و اول بگم،‌ ادهاک مزخرفه.به مراتب ادهاک یا ساین توسعه‌دهنده‌ وابستگی بیشتری به اپل داره. خوب تند نریم یه توضیح بدم همینجا که اصن اینا چین چون قرار خیلی بگیم ادهاک.هر برنامه‌ خارج از اپ‌استور برای اجرا شدن روی دیوایس باید یک امضا داشته باشه ( همون unknown srcی که نداریم اینجا معلوم میشه )اپل باید بدونه خارج از اپ‌استور این برنامه چیه و از کجا اومده و آیا اجازه باز شدن بهش باید بده یا نه.ساین زیاد داریم به کنار ۲ تا اینجا مورد بحثه:ساین یا امضای in-house که به همون اسم Enterprise هم میشناسید.ساین یا امضای ad-hoc که میشه همون امضایی که توسعه‌دهنده برای تست اپلیکیشن‌هاش روی دیوایس‌های ریجستر شده‌ی خودش توی زمان development استفاده میکنه و حتی تعداد دستگاه‌های ریجستر شده یا همون UDID هم محدوده به ۱۰۰ دیوایس‌ه.ساین in-house که همه بدبختی‌ها الان سر همینه خوبی‌هایی داره که به عنوان راه جایگزین تاحالا استفاده شده، اصلی ترینش تعداد نصب نامحدودشه، میلیون میلیون میشه نصبش کرد و کاربر Trust میزنه و تامام. از خوبی‌های دیگه‌اش بگیم اینکه TTL یا زمان expire شدنش اگه درست یادم باشه ۳ ساله‌اس. یعنی اگه اپل دستی ریوکش نکنه  این تفلی ذاتا باید تا مدت زیادی که ۳ ساله زنده بمونه روی دیوایس شما ( الان سر ۱ ماه اپل خودش ریوک میکنه )ساین ad-hoc چرا خوب نیست حالا ( مزخرف به عبارتی ). توی Enterprise شما میری فایل p12 امضاتو از پنل اپل میگیری و خدافظ بلند. اپل دیگه باهات کاری ندارم. هرچی خواستم با این امضا که دارم ساین میکنم بت جواب پس نمیدمولی توی ad-hoc قضیه فرق داره. باید قبل از نصب یه برنامه روی گوشی جدید UDID اون گوشی ثبت بشه توی پنل اپل، یعنی کاربر میاد میگه آقا من برنامه همراه‌‌اول و میخوام، شما باید UDID گوشیشو دربیاری سیستمت بره به پنل developer اپل لاگین بده ( اینجا باید تایید ۲ مرحله‌ای بزنی ) بعد یه api کال بده به پنل اپل که اقای اپل این گوشی جدید منه توسعه‌دهندس قراره باهاش اپ‌هامو تست کنم ثبتش کن. خوب حالا که این دیوایس کاربر معمولی به عنوان توسعه‌دهنده شناخته شده وقتشه با اون p12 که ماله همون اکانت ۱۰۰ تاییه یه ساین منحصر به کاربری که بهت درخواست داده انجام بدی. بگذریم از اینکه پیاده سازی این سیستم پر از استرسه چون قدم به قدم به اپل وابسته‌ای. تا جایی که حتی اگه اپل روی تایم session‌های لاگین پنلشو از ۳۰ روز که الان هست بکنه ۳ روز پروژه منفجر میشه چون سیستم شما که وظیفه ساین و ثبت UDID داره این وسط لنگ کد تایید دومرحله‌ای میشه، توی scale بالا این حرکت یعنی شکست، مگه اینکه شما روزی ۱۰۰-۲۰۰ تا کاربر ثبت کنی بگی آروم آروم بیاید من بتونم هندل کنم :)) یه حساب سرانگشتی بکنیم اگه ۵ میلیون کاربر iOS داشته باشیم به ازای هر ۱۰۰ کاربر باید یه اکانت developer به قیمت ۹۹ دلار خریداری بشه میشه به عبارتی ۵۰ هزار اکانت، گرفتن این اکانت‌ها با سخت‌گیری‌های اپل به کنار، تداومش به کنار.همه چی اصلا خوب پیش بره نهایتا TTL یا همون زمان expire شدن اپ‌های ad-hoc یک سالس و بعد ۱ سال دوباره باید همه‌ چیز از اول نصب شه. شاید این TTL هم کم بشه به ۱۲۰ روز چون دلیلی نداره برنامه‌ی تست یک توسعه‌دهنده ۱ سال زنده بمونه، ۳-۴ روز هم توسعه‌دهنده‌ای استفاده نمیکنه ازش :))) چه برسه ماه. و بله مرگ یه آرزو .سازمان‌ها هم شاید موقت‌ن بتونن با ریساین جواب بگیرن ولی مهاجرت به وب با همه‌ی کاستی‌های iOS و بازی‌هایی که در میاره و Web Pushی که ساپورت نمیکنه راه خوبی میتونه باشه، حداقل دغدغه و درد سری دیگه وارد نمیکنه بهتون، خارج از بحث هزینه همین sms بازی و کشوندن کاربر به این طرف و اون طرف برای هیچ‌توسعه‌دهنده و شرکتی باب میل نیست. هدایت کنید به وب‌اپلیکیشن و این دندون و برای همیشه بکنید. https://twitter.com/Monsieur_Lucky/status/1111595846238384128 برای انتشار در اپ‌استور راه‌‌هایی هنوز وجود داره در موارد خاص شاید کور سوی امیدی باشه و بهتره سعی خودتون رو چند باره انجام بدید،‌ هستند اپ‌هایی که چه با کدپوش چه بدون کدپوش درون اپ‌استور جا خوش کردن.</description>
                <category>سعید شیخی</category>
                <author>سعید شیخی</author>
                <pubDate>Sat, 13 Apr 2019 02:04:47 +0430</pubDate>
            </item>
                    <item>
                <title>چرا برنامه‌های ایرانی بعد از مدتی باز نمیشوند؟</title>
                <link>https://virgool.io/@SaeedSheikhi/%DA%86%D8%B1%D8%A7-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A8%D8%B9%D8%AF-%D8%A7%D8%B2-%D9%85%D8%AF%D8%AA%DB%8C-%D8%A8%D8%A7%D8%B2-%D9%86%D9%85%DB%8C%D8%B4%D9%88%D9%86%D8%AF-uz5hrosbj5lq</link>
                <description> مشکل کرش یا ریوک شدن اپ‌های iOS چیست و چرا پیش می‌آید؟در سیستم عامل iOS چیزی به نام unknown source وجود نداردسیاست اپل به صورت یک‌طرفه و بسیار سخت‌گیرانه‌اسدلیلی که همیشه برای پوشش بر سر این محیط بسته‌ی اپل گفته میشود بحث امنیت استکه اپل برای انتشار اپ‌ها تنها به جایی مانند اپ‌استور با نظارت کامل خودش اطمینان داردو هر اپی به هر نحوی به غیر از اپ‌استور به صورت عمومی در دسترس باشد غیرقانونی تلقی میشود، البته از نظر اپلاگر دقیق‌تر به این موضوع نگاه کنیم؛ امنیت یک طرف داستان است،طرف دیگر بحث سود اپل درمیان است. قسمت بزرگی از درآمد اپ‌استور از فروش برنامه‌های توسعه‌دهنده‌ها و خرید‌های درون برنامه‌ای آنهاست، در این مرحله نیز توسعه‌دهنده‌ها به دلیل اجبار اپل مجبور به استفاده از سیستم خرید‌درون برنامه‌ای اپ‌استور هستند، دلیل این اجبار پورسانت بزرگ اپل از این خرید‌هاست و عملا با گذاشتن این محدودیت‌ها و غیرقانونی اعلام کردن انتشار خارج از اپ‌استور دست توسعه‌دهندگان را بسته و سود هنگفتی را از سمت آنها به سمت خود سرازیر کردهبرای مثال بازی Fortnite را با این فروش عظیم تصور کنید که حتی استوری اختصاصی برای بازی‌های خودش به نام Epic Games تهیه کرده که سود و باجی به شرکتی پرداخت نکنداما در iOS با سیاست‌های یک طرفه اپل مجبور به پیاده سازی سیستم خرید‌درون‌برنامه‌ای اپل شده و قاعدتا درصدی از این سود بزرگ نصیب اپل خواهد شد. اینجا میتونیم ببینیم دلیلی غیر از امنیت کاربران برای اپل و این سیاست یک‌طرفه‌اش وجود دارد یعنی “سود بیشتر”حالا برگردیم به اپ‌های ایرانی و کرش‌های ناگهانیاپ‌استور از چند سال گذشته با شروع شدن تحریم‌ها اپ‌های ایرانی را از اپ‌استور حذف کردراه چاره‌ای شکل گرفت، حالا که اپ‌استوری نیست پس انتشار با استفاده از پروفایل‌های سازمانی یا Enterprise باید شکل بگیرهپروفایل‌های سازمانی عملا و صراحتا برای انتشار اپ‌های داخل سازمانی فروخته میشونداپ سازمانی چیست؟ برای مثال یک نیروگاه برق اپی برای کنترل و نظارت بر سیستم‌های خود طراحی میکند، در این شرایط دلیلی برای انتشار همچین اپی در اپ‌استور که عمومی است وجود ندارد، پس این سازمان از پروفایل سازمانی خود استفاده میکند و مجوز نصب این اپ بر روی دیوایس‌های کارکنان خود را به‌دست می‌آوردبدین صورت که شما برای تهیه این پروفایل‌ها ۷خان رستمی باید طی کنید که در یکی از این مراحل توماری را امضا میکنید که قید شده این برنامه‌ها باید منحصرا داخل سازمان شما و برای افراد و کارکنان شرکت شما مورد استفاده قرار گیرندیعنی عملا شما اجازه‌ی استفاده از این انتشار برای عموم مردم را ندارید به ۲ دلیل:۱- سد بررسی اپ‌استور وجود ندارد و اپل قادر به بررسی محتوای اپ برای تایید امنیت! نیست۲- از سود فروش حاصل شده در این اپ اپل نصیب نمیبرد ( حیف واقعا! )پس در نتیجه اگر به هر نحوی اپل متوجه استفاده‌ی غیرمیل او از این پروفایل‌ها شود که سود او را تهدید میکنید به صورت آنی طبق قراردادی که امضا شده این پروفایل را یک طرفه به صورت ناگهانی نابود یا terminate میکند و آخر داستان این میشه که هر اپی با این مجوز به اصطلاح ساین شده باشد revoke یا ابطال خواهد شداین روند ربطی به ایران یا ایرانی بودن و تحریم ندارد، در ابعاد جهانی کشور‌های چین و روسیه هم به صورت شدید به دلیل عرضه اپ‌های غیرقانونی و خارج از اپ‌استور با این مشکل دست و پنجه نرم میکنند ولی تنها تفاوت اینجا معلوم میشود که اپ‌استور برای ایران بسته شده و عملا اپ‌های رسمی هم راهی جز امضاهای Enterprise ندارند این مشکل برای ما در ایران بیشتر مشهود و درد‌آور است.در نتیجه یک شبه اپ‌های شما از کار خواهد افتاد و باید منتظر باشید استور شما یا سازمانی که اپ برای اوست امضا و ۷خان رستم دیگری طی کند و اپ‌هایی با امضای جدید در اختیار شما قرار دهد. فقط کافیست کاربر یکبار اپ قبلی را پاک و نسخه‌ی جدید را نصب کند و بدیهی است دیتای ذخیره شده داخل اپ از بین خواهد رفت و ذخیره‌ی اطلاعات ضروری مانند مراحل طی شده در بازی شاید اگر سمت سرور صورت گیرد تجربه‌ی بهتری حداقل در زمینه iOS Games با این نوع انتشار در اختیار کاربران قرار گیرد.حالا میرسیم به اینکه چرا و چطور یه پروفایل ریوک میشه ( یک داستان خیلی مرموز )یه روز آفتابی بلند میشید و میبینید دیگه هیچ‌اپی روی گوشیتون باز نمیشه و میفهمید امضا ریوک شده، در وهله‌ی اول خیلی ساده به این داستان پیچیده نگاه کنیم یکی از پیش‌نیاز‌های ریوک شدن ریپورت شدن امضا از طرف کاربران! به اپله، اپل هم بعد از بررسی‌های دوره‌ای از ریپورت‌ها دکمه‌ی ریوک رو فشار میده. البته زنده ماندن طولانی مدت یک امضا نیز دلیلی تجربی بر ریوک شدن یک امضاس ولی ریوک‌های کوتاه مدت دلیلی محکم بر ریپورت شدن آن پروفایل دارد.راه‌های جایگزین مانند ساین ad-hoc در لحظه شاید به عنوان پلان B در دسترس باشند ولی با وجود Enterprise‌ها و سهولت استفاده به عنوان پلان B باقی خواهند ماند. https://virgool.io/@SaeedSheikhi/%D9%BE%D8%A7%DB%8C%D8%AF%D8%A7%D8%B1%DB%8C-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%87%D8%A7%DB%8C-ios-%D9%85%D8%B1%DA%AF-%DB%8C%DA%A9-%D8%A2%D8%B1%D8%B2%D9%88-pkjtn2odvqhp </description>
                <category>سعید شیخی</category>
                <author>سعید شیخی</author>
                <pubDate>Sat, 13 Apr 2019 01:14:50 +0430</pubDate>
            </item>
            </channel>
</rss>