Chrome插件可以通過以下方式向網頁注入JS文件:
使用內容腳本:
動態載入JS文件:
使用chrome.tabs.executeScript方法:
注意事項:
參考代碼示例:
『貳』 網頁文件被注入js腳本
網頁掛馬
解決辦法:
1.使用urlsnooper軟體,進行查殺.
2.查看網站里,最近被修改的文件.
3.如果你對程序代回碼清楚,可以自答行查找問題,想一下容易被人家調用的文件
4.檢查資料庫是否有html內容輸出到頁面上,或者在上傳保存時,沒有做好標簽過濾和許可權保護
『叄』 什麼是js注入
JavaScript注入就是在瀏覽器地址欄中輸入一段js代碼,用來改變頁面js變數、頁面標簽的內容。
使用Javascript注入專,用戶不需要關閉或保存屬網頁就可以改變其內容,這是在瀏覽器的地址欄上完成的。命令的語法如下:
javascript:alert(#command#)
『肆』 angularjs怎麼查看注入了什麼依賴
依賴注入
依賴注入是軟體設計模式中的一部分,用於處理組件是如何得到它說依賴的其它組件的。
Angular的注入器子系統(Angular是由多個系統組成)是負責創建組件,解決它們之間的依賴關系,並且根據它們的需要,給它們提供所需要的組件的實例。
使用依賴注入
依賴注入(DI)是貫通了整個angularjs的。當這個組件定義了,或者在mole的run方法config方法中定義了它們,你就可以在這個mole的任何地方使用這個組件了。
1、諸如:服務(service)、指令(directive)、過濾器(filter)和動畫(animation)組件,都是通過注入器的工廠(factory)方法或者在構造函數中定義的。這些組件可以注入service"(服務) 或者 "value"(值)。
2、控制器(controller)就是使用構造函數的方式進行定義的。它可以注入service"(服務) 或者 "value"(值)。
3、run方法接收一個function函數,它裡面可以注入服務(service)或者值(value)亦或常量(constant),然後可以被注入到需要它們的組件當中去(注意,這里可以定義一些常量哦!)。提示:在run中,你不能注入「provider」哦!
4、config方法接收一個function函數,它可以注入"provider" and "constant"(常量)。提示:在config方法中,你不可以注入"service"(服務) 或者 "value"(值)。
關於模塊Moles的run方法和config方法的更多信息,請點擊這里。
工廠(factory)方法
使用factory來定義指令(directive),服務(service)或者過濾器(filter)。factory方法是注冊在mole(模塊)下的。我們推薦你這樣來定義factory:
12345678910angular.mole('myMole', []).factory('serviceId', ['depService', function(depService) {// ...}]).directive('directiveName', ['depService', function(depService) {// ...}]).filter('filterName', ['depService', function(depService) {// ...}]);模塊兒(mole)的方法
我們可以指定方法在configuration(配置環境)下運行,也可以在mole(模塊)的運行時,通過調用config方法和run方法來運行。
1234567angular.mole('myMole', []).config(['depProvider', function(depProvider) {// ...}]).run(['depService', function(depService) {// ...}]);控制器
我們推薦如下的方式來注冊一個Controller:
1234567someMole.controller('MyController', ['$scope', 'dep1', 'dep2', function($scope, dep1, dep2) {...$scope.aMethod = function() {...}...}]);不像服務一樣,在應用程序中,相同的controller是可以有多個實例的哈。
依賴性的聲明
在Angular中,調用一些方法都是使用注入的方式進行調用的,例如:service factory,controller。那麼你就必須將它們所使用的組件給注入進去,以提供它們使用。有以下三種方式進行依賴關系的聲明。
1、使用內聯數組的聲明方式
2、使用$inject屬性來聲明
3、隱式聲明方式(不推薦,並且會有警告)
一、內聯數組的聲明方式
這是非常好的一種聲明依賴性的方式。來一個例子:
123someMole.controller('MyController', ['$scope', 'greeter', function($scope, greeter) {// ...}]);我們使用一個數組,這個數組由兩部分元素組成,一個用於聲明依賴性的字元串集合和最後一個元素(這個元素是一個方法,用於自己的實現)。
二、$inject屬性進行聲明
直接上個例子:
12345varMyController = function($scope, greeter) {// ...}MyController.$inject = ['$scope', 'greeter'];someMole.controller('MyController', MyController);需要注意的是,$inject數組中的依賴,必須與MyController控制器中的參數一 一對應。
三、隱式聲明
注意:如果你打算使用這種方式去運行代碼,你的服務的名稱可能會被重命名,服務也可能會在你的應用中被玩壞。
這是最簡單的一種聲明方式,你只要保證你的參數名稱和依賴的組件名稱能對得上。
123someMole.controller('MyController', function($scope, greeter) {// ...});在上面的例子當中,$scope服務和greeter服務會被注入到controller裡面去。這種方式的一個好處就是少了依賴性聲明的數組的存在。而且可以很自由的重新排列你的依賴性。
但是,這個方法在混淆和壓縮後是沒有發用的。是無法正常工作的。因為這些動作都會重命名你的參數。呃呃呃……
ng-annotate工具可以方便的讓你在你的應用中使用這個隱式聲明模式,因為它會在進行壓縮或者混淆的時候自動把你的聲明方式給改成我們推薦的內聯方式進行聲明,如果你想使用這種方式,可能你需要使用ng-strict-di(嚴格模式)。
正因為這種方式要使用嚴格模式,我們需要很小心,所以,一般我們都不會使用這種方式。
使用嚴格的依賴注入
你可以把ng-strict-di指令增加到ng-app指令所在的元素上,來使得你的應用使用的是嚴格模式。
1234567<!doctype html><html ng-app="myApp"ng-strict-di><body>I can add: {{ 1 + 2 }}.<script src="angular.js"></script></body></html>嚴格模式下,如果你嘗試使用隱式方式來聲明的時候,就會拋異常。
1234567angular.mole('myApp', []).factory('willBreak', function($rootScope) {// $rootScope is implicitly injected}).run(['willBreak', function(willBreak) {// Angular will throw when this runs(執行到這里會報錯)}]);如果你是使用手動方式啟動應用的話,你也可以這樣來使用嚴格模式:
123angular.bootstrap(document, ['myApp'], {strictDi: true});