5

次のようなブックマークレットを持つページを作成しようとしています:

<a ng-href="{{getBookmarklet()}}">Bookmarklet</a>

function MyCtrl($scope) {
  $scope.getBookmarklet = function() {
     return 'javascript:alert(1)';
  }
}

href は unsafe:javascript:alert(1) としてサニタイズされます。したがって、これを防ぐために sce.trustAs を使用してみました:

function MyCtrl($scope, $sce) {
  $scope.getBookmarklet = function() {
     return $sce.trustAsUrl('javascript:alert(1)');
  }
}

ただし、まだ URL に「安全でない」というプレフィックスが付きます。私も trustAsJs を試しましたが、うまくいきませんでした。compileProvider を使用してアプリ全体で javascript: URL をホワイトリストに登録したくありません。この 1 つのインスタンスだけを許可してください。

4

1 に答える 1