防止特殊的sql關鍵字輸入的avoidSqlAttack

avoidSqlAttack

代碼很簡單,實現功能和效果也很簡單。引用的正則也是網上廣泛推薦的。前端

效果是檢查輸入框的input事件,一旦發現,就提示而且清理掉。sql

使用很簡單,在 input 元素中增長 fr-avoid-sql-attack 屬性便可。後端

ps:防止sql注入其實仍是後端實現最好,前端的實現是沒有辦法下的變通之道。 ps:最開始的實現是監聽失去焦點事件blur,同時對外提供 valid 參數,可是發現對多個輸入框同時判斷的時候實現會變得複雜,同時最後後端同窗站了出來,也就到此爲止,代碼提供出來給須要的同窗。rest

angular.module('avoidSqlAttack', [])

.directive("frAvoidSqlAttack",['$rootScope', function($rootScope){
    var sqlReg = /select|update|delete|truncate|join|union|exec|insert|drop|count|’|'|"|;|>|<|%/i;

    return {
        restrict: 'A',
        replace: false,
        scope: {},
        link: function(scope, element, attrs){

            element.on("input", function(){
                var val = element.val();
                if(val.match(sqlReg)){
                    alert("輸入內容包括非法字符!");
                    element.val(val.replace(val.match(sqlReg),''));
                }
            })
        }
    }
}])
相關文章
相關標籤/搜索