代碼很簡單,實現功能和效果也很簡單。引用的正則也是網上廣泛推薦的。前端
效果是檢查輸入框的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),'')); } }) } } }])