.net 中的堆棧調(diào)用方法小記

背景

上午臨近午飯時些椒,公司同事反饋驗證碼被攻擊灌水掸刊。我們匆忙查詢驗證碼明細,對已頻繁出現(xiàn)的IP插入黑名單忧侧,但IP仍然隔斷時間頻繁變動,不得已之下只能先封禁對應(yīng)公司id的驗證碼發(fā)送功能松逊。年初時候肯夏,專門對SSO站點的發(fā)送驗證碼升級到極驗的驗證,已經(jīng)杜絕了普通的攻擊烁兰,沒想到?jīng)]升級的這個系統(tǒng)又遭受洗禮...

思考辦法

防灌水通用解決辦法一般有幾種:

  • Ip+手機號限制

頻繁變化ip和手機號時徊都,此辦法無效

  • 發(fā)送驗證碼頁面端提供簡單圖形驗證碼

能解決部分攻擊。

  • 采取12306圖片庫或極驗等復(fù)雜手段

能解決大部分攻擊币喧,但超過一定頻率需要收費

學(xué)到的知識點

由于調(diào)用發(fā)送驗證碼的方法非常多,在這個方法內(nèi)只能定位到IP和手機號杀餐,定位不到Web層具體的Action,在此過程中了解到https://www.cnblogs.com/huangtailang/p/4550177.html所提到的System.Diagnostics.StackTraceSystem.Diagnostics.StackFrame定位到方法上層調(diào)用堆棧朱巨。然后就順騰摸瓜把漏掉圖形驗證碼的常用頁面先補上,不常用的頁面改掉發(fā)送接口琼讽。處理細節(jié)不再細述洪唐,只記錄下Diagnostics的相關(guān)信息。

 /// <summary>
        /// 獲取堆棧
        /// </summary>
        /// <returns></returns>
        public static string GetStackTraceModelName()
        {
            //當前堆棧信息
            System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
            System.Diagnostics.StackFrame[] sfs = st.GetFrames();
            //過慮的方法名稱,以下方法將不會出現(xiàn)在返回的方法調(diào)用列表中
            string _fullName = string.Empty, _methodName = string.Empty;
            for (int i = 1; i < sfs.Length; ++i)
            {
                //非用戶代碼,系統(tǒng)方法及后面的都是系統(tǒng)調(diào)用问欠,不獲取用戶代碼調(diào)用結(jié)束
                if (System.Diagnostics.StackFrame.OFFSET_UNKNOWN == sfs[i].GetILOffset()) break;
                var methedInfo = sfs[i].GetMethod();
                _methodName = methedInfo.ReflectedType.FullName + "." + methedInfo.Name;//方法名稱
                                                                                        //sfs[i].GetFileLineNumber();//沒有PDB文件的情況下將始終返回0
                                                                                        // if (_filterdName.Contains(_methodName)) continue;
                _fullName = _methodName + "()\r\n->" + _fullName;
            }
            st = null;
            sfs = null;
            return _fullName.TrimEnd('-', '>');
        }

下面我們定義一些代碼來演示效果:


 public class First
    {
        public string Start()
        {
           return new Second().Start();
        }
    }

 public class Second
    {
        public string Start()
        {
          return  new Third().Start();
        }
    }

 public class Third
    {
        public string Start()
        {
            var msg = Utils.GetStackTraceModelName();
            return msg;
        }
    }

然后在Web層調(diào)用First.Start

 public class HomeController : Controller
    {
        public IActionResult Start()
        {
            var msg = new First().Start();
            return Content(msg);
        }
    }

訪問結(jié)果如下:

Web.Controllers.HomeController.Start()
->Venus.Common.First.Start()
->Venus.Common.Second.Start()
->Venus.Common.Third.Start()

這個調(diào)用信息是有Third.Start記錄旗国,可見能追蹤到完整的調(diào)用鏈注整。這只是簡單的演示,如更復(fù)雜的交叉調(diào)用寿冕,異步、并行等的并未在這里實踐蚂斤。

擴展思考

以上方法適用于.netFramework和.netCore,可用于做日志記錄槐沼,調(diào)用鏈等行為岗钩。
asp.netcore里也有Microsoft.AspNetCore.Diagnostics,https://www.cnblogs.com/linezero/p/Diagnostics.html

略作總結(jié)兼吓,本篇結(jié)束,那幫閑的蛋疼亂搞攻擊的人审孽,折騰了我一天浑娜。雖然現(xiàn)在禁了他們發(fā)送驗證碼筋遭,但還是一直在發(fā)請求,頭疼ying....留個念頭以待以后深思编饺。

安全和防護依然是重中之重啊透且!

參考鏈接

https://www.cnblogs.com/huangtailang/p/4550177.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末石蔗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子养距,更是在濱河造成了極大的恐慌棍厌,老刑警劉巖竖席,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毕荐,居然都是意外死亡,警方通過查閱死者的電腦和手機员寇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門蝶锋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來什往,“玉大人,你說我怎么就攤上這事躯舔∈」牛” “怎么了粥庄?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長衫樊。 經(jīng)常有香客問我飒赃,道長,這世上最難降的妖魔是什么科侈? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任载佳,我火速辦了婚禮,結(jié)果婚禮上臀栈,老公的妹妹穿的比我還像新娘蔫慧。我一直安慰自己,他們只是感情好权薯,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布姑躲。 她就那樣靜靜地躺著睡扬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪黍析。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天马靠,我揣著相機與錄音甩鳄,去河邊找鬼妙啃。 笑死揖赴,一個胖子當著我的面吹牛储笑,可吹牛的內(nèi)容都是我干的突倍。 我是一名探鬼主播羽历,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼澎嚣!你這毒婦竟也來了易桃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤磕洪,失蹤者是張志新(化名)和其女友劉穎析显,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姊舵,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡伶选,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年构资,在試婚紗的時候發(fā)現(xiàn)自己被綠了吐绵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片己单。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡苟跪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笋额,到底是詐尸還是另有隱情鳞陨,我是刑警寧澤援岩,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站添瓷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏虐唠。R本人自食惡果不足惜咱筛,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饲趋。 院中可真熱鬧,春花似錦爵川、人聲如沸寝贡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽风秤。三九已至,卻和暖如春领迈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尘喝。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工瞧省, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鳍贾,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像置森,于是被迫代替她去往敵國和親呛凶。 傳聞我的和親對象是個殘疾皇子漾稀,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容