<bdo id="4g88a"><xmp id="4g88a">
  • <legend id="4g88a"><code id="4g88a"></code></legend>
    權限管理、用戶權限系統、開源用戶權限系統、信息化建設標準基礎數據管理平臺
    代碼改變世界

    C#.NET 大型企業信息化系統集成快速開發平臺 4.2 版本 - 訪問頻率限制功能實現、防止黑客掃描、防止惡意刷屏

    2015-09-29 09:17  通用C#系統架構  閱讀(4911)  評論(3編輯  收藏  舉報

    很多軟件組件,大家都能想到了,大家也能做出來,但是成熟穩定、可靠、易用、功能全面,可信任,可相信,可開源就不是很容易,需要樹立良好的口碑才可以。

    1:往往會有黑客,進行撞庫挖掘漏洞,很多系統的賬戶有可能被猜測出密碼來,會存在嚴重的安全問題。

    2:全部加上圖片驗證碼等,用戶體驗比較差,天天用的用戶會很難受。

    3:惡意刷屏、大數據查詢有惡意查詢時,服務器進入惡性循環,數據庫壓力會過大,為了防止進入惡性循環,能控制調用頻率比較好。

    4:對外,對內提供接口調用時,合作伙伴,內部接口調用頻率過高時,服務器的壓力會多大,網絡流量也會過大,系統進入惡性循環。

    5:為了有良性的信息系統,有強大的組件支撐,可以保證整個生態系統的平穩運行。

     

    調用方法如下:

    bool result = false; result = DotNet.Business.PooledRedisHelper.CallLimit("ip, 手機,url", 50, 5);

    System.Console.WriteLine("result:" + result.ToString());

    限制調用次數的功能,做了一個通用的函數,若有需要歡迎大家使用。

    什么資源,多少分鐘內,限制調用多少次。 全自動的,返回 true, 表示,已經到達了限制次數了, false 可以繼續調用的意思。

     

    //-----------------------------------------------------------------
    // All Rights Reserved , Copyright (C) 2015 , Hairihan TECH, Ltd. 
    //-----------------------------------------------------------------
    
    using System;
    using System.Configuration;
    using ServiceStack.Redis;
    
    namespace DotNet.Business
    {
        /// <summary>
        /// 調用頻率限制獨立的庫。
        ///
        /// 修改紀錄
        ///
        ///        2015-09-25 版本:1.0 JiRiGaLa 創建主鍵。
        ///
        /// <author>
        ///        <name>JiRiGaLa</name>
        ///        <date>2015-09-25</date>
        /// </author>
        /// </summary>
        public sealed partial class PooledRedisHelper
        {
            // 數據庫
            public static int InitialDbCallLimit = 78;
    
            private static PooledRedisClientManager instanceCallLimit = null;
    
            public static PooledRedisClientManager InstanceCallLimit
            {
                get
                {
                    if (instanceCallLimit == null)
                    {
                        if (ConfigurationManager.AppSettings["RedisHosts"] != null)
                        {
                            Url = ConfigurationManager.AppSettings["RedisHosts"];
                        }
                        if (string.IsNullOrEmpty(Url))
                        {
                            Url = "redis.ztosys.com:6379";
                        }
                        instanceCallLimit = new PooledRedisClientManager(InitialDbCallLimit, new string[] { Url });
                    }
                    return instanceCallLimit;
                }
            }
    
            public static IRedisClient GetCallLimitClient()
            {
                return InstanceCallLimit.GetClient();
            }
    
            /// <summary>
            /// 是否在指定的時間內,已經到了呼叫限制次數
            /// 什么鍵名,什么鍵值,在多少時間內,限制調用幾次
            /// 2015-09-25 吉日嘎拉
            /// </summary>
            /// <param name="keyName">鍵名</param>
            /// <param name="minutes">過期時間,多少時間里</param>
            /// <param name="limit">限制次數</param>
            /// <returns>是否超過限制</returns>
            public static bool CallLimit(string keyName, int minutes, int limit)
            {
                return CallLimit(keyName, DateTime.Now.AddMinutes(minutes), limit);
            }
    
            public static bool CallLimit(string keyName, DateTime expireAt, int limit)
            {
                bool result = false;
    
                using (var redisClient = PooledRedisHelper.GetUserClient())
                {
                    if (redisClient.ContainsKey(keyName))
                    {
                        result = redisClient.IncrementValue(keyName) > limit;
                    }
                    else
                    {
                        redisClient.IncrementValue(keyName);
                        // 設置過期時間
                        redisClient.ExpireEntryAt(keyName, expireAt);
                    }
                }
    
                return result;
            }
        }
    }

     



    C# ASP.NET 通用權限設計、通用權限管理、通用權限組件、單點登錄、集中式權限管理、統一授權體系、分級管理分級授權


    微信掃一掃加好友



    免费视频精品一区二区_日韩一区二区三区精品_aaa在线观看免费完整版_世界一级真人片
    <bdo id="4g88a"><xmp id="4g88a">
  • <legend id="4g88a"><code id="4g88a"></code></legend>