.netcore 堆栈调用方法小记
1|0背景
上午臨近午飯時,公司同事反饋驗證碼被攻擊灌水。我們匆忙查詢驗證碼明細,對已頻繁出現(xiàn)的IP插入黑名單,但IP仍然隔斷時間頻繁變動,不得已之下只能先封禁對應(yīng)公司id的驗證碼發(fā)送功能。年初時候,專門對SSO站點的發(fā)送驗證碼升級到極驗的驗證,已經(jīng)杜絕了普通的攻擊,沒想到?jīng)]升級的這個系統(tǒng)又遭受洗禮...
2|0思考辦法
防灌水通用解決辦法一般有幾種:
Ip+手機號限制
頻繁變化ip和手機號時,此辦法無效
發(fā)送驗證碼頁面端提供簡單圖形驗證碼
能解決部分攻擊。
采取12306圖片庫或極驗等復(fù)雜手段
能解決大部分攻擊,但超過一定頻率需要收費
3|0學(xué)到的知識點
由于調(diào)用發(fā)送驗證碼的方法非常多,在這個方法內(nèi)只能定位到IP和手機號,定位不到Web層具體的Action,在此過程中了解到https://www.cnblogs.com/huangtailang/p/4550177.html所提到的System.Diagnostics.StackTrace和System.Diagnostics.StackFrame定位到方法上層調(diào)用堆棧。然后就順騰摸瓜把漏掉圖形驗證碼的常用頁面先補上,不常用的頁面改掉發(fā)送接口。處理細節(jié)不再細述,只記錄下Diagnostics的相關(guān)信息。
下面我們定義一些代碼來演示效果:
然后在Web層調(diào)用First.Start
這個調(diào)用信息是由Third.Start記錄,可見能追蹤到完整的調(diào)用鏈。這只是簡單的演示,如更復(fù)雜的交叉調(diào)用,異步、并行等的并未在這里實踐。
4|0擴展思考
以上方法適用于.netFramework和.netCore,可用于做日志記錄,調(diào)用鏈等行為。
asp.netcore里也有Microsoft.AspNetCore.Diagnostics,https://www.cnblogs.com/linezero/p/Diagnostics.html
略作總結(jié),本篇結(jié)束,那幫閑的蛋疼亂搞攻擊的人,折騰了我一天。雖然已經(jīng)禁了他們發(fā)送驗證碼,但還是一直在發(fā)請求,頭疼ying....留個念頭以待以后深思。
安全和防護依然是重中之重啊!
5|0參考鏈接
https://www.cnblogs.com/huangtailang/p/4550177.html
原文地址:https://www.cnblogs.com/fancunwei/p/10146151.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的.netcore 堆栈调用方法小记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【.NET Core项目实战-统一认证平
- 下一篇: 微软开源的Trill是什么?