angular_xss 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -3,7 +3,7 @@ angular_xss [![Build Status](https://travis-ci.org/makandra/angular_xss.png?bran
3
3
 
4
4
  When rendering AngularJS templates with a server-side templating engine like ERB or Haml it is easy to introduce XSS vulnerabilities. These vulnerabilities are enabled by AngularJS evaluating user-provided strings containing interpolation symbols (default symbols are `{{` and `}}`).
5
5
 
6
- This gem patches ERB/rails_xss and Haml so Angular interpolation symbols are auto-escaped in unsafe strings. And by auto-escaped we mean replacing `{{` with ` { { `. To leave AngularJS interpolation marks unescaped, mark the string as `html_safe`.
6
+ This gem patches ERB/rails_xss and Haml so Angular interpolation symbols are auto-escaped in unsafe strings. And by auto-escaped we mean replacing `{{` with `{{ $root.DOUBLE_LEFT_CURLY_BRACE }}`. To leave AngularJS interpolation marks unescaped, mark the string as `html_safe`.
7
7
 
8
8
  **This is an unsatisfactory hack.** A better solution is very much desired, but is not possible without some changes in AngularJS. See the [related AngularJS issue](https://github.com/angular/angular.js/issues/5601).
9
9
 
@@ -32,9 +32,17 @@ Installation
32
32
 
33
33
  2. Run `bundle install`.
34
34
 
35
- 3. Run your test suite to find the places that broke.
35
+ 3. Add this to your Angular code (replacing "myApp" of course):
36
36
 
37
- 4. Mark any string that is allowed to contain Angular expressions as `#html_safe`.
37
+ ```
38
+ angular.module('myApp', []).run(['$rootScope', function($rootScope) {
39
+ $rootScope.DOUBLE_LEFT_CURLY_BRACE = '{{';
40
+ }]);
41
+ ```
42
+
43
+ 4. Run your test suite to find the places that broke.
44
+
45
+ 5. Mark any string that is allowed to contain Angular expressions as `#html_safe`.
38
46
 
39
47
 
40
48
  Known limitations
@@ -23,7 +23,7 @@ module AngularXss
23
23
  if disabled?
24
24
  string
25
25
  else
26
- string.gsub('{{', ' { { ')
26
+ string.to_s.gsub('{{'.freeze, '{{ $root.DOUBLE_LEFT_CURLY_BRACE }}'.freeze)
27
27
  end
28
28
  end
29
29
 
@@ -41,4 +41,3 @@ module AngularXss
41
41
 
42
42
  end
43
43
  end
44
-
@@ -1,3 +1,3 @@
1
1
  module AngularXss
2
- VERSION = '0.2.3'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- angular_xss (0.2.3)
4
+ angular_xss (0.3.0)
5
5
  activesupport
6
6
  haml (>= 3.1.5)
7
7
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- angular_xss (0.2.3)
4
+ angular_xss (0.3.0)
5
5
  activesupport
6
6
  haml (>= 3.1.5)
7
7
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- angular_xss (0.2.3)
4
+ angular_xss (0.3.0)
5
5
  activesupport
6
6
  haml (>= 3.1.5)
7
7
 
@@ -6,12 +6,12 @@ shared_examples_for 'engine preventing Angular XSS' do
6
6
 
7
7
  it 'escapes Angular interpolation marks in unsafe strings' do
8
8
  html.should_not include('{{unsafe}}')
9
- html.should include(' { { unsafe}}')
9
+ html.should include('{{ $root.DOUBLE_LEFT_CURLY_BRACE }}unsafe}}')
10
10
  end
11
11
 
12
12
  it 'recognizes the many ways to express an opening curly brace in HTML' do
13
13
 
14
- html.should include(" { { unsafe}}")
14
+ html.should include("{{ $root.DOUBLE_LEFT_CURLY_BRACE }}unsafe}}")
15
15
  html.should_not include("{{unsafe}}")
16
16
 
17
17
  braces = [
@@ -37,7 +37,7 @@ shared_examples_for 'engine preventing Angular XSS' do
37
37
 
38
38
  it 'does not escape Angular interpolation marks in safe strings' do
39
39
  html.should include("{{safe}}")
40
- html.should_not include(" { { safe}}")
40
+ html.should_not include("{{ $root.DOUBLE_LEFT_CURLY_BRACE }}safe}}")
41
41
  end
42
42
 
43
43
  it 'does not escape Angular interpolation marks in a block where AngularXSS is disabled' do
@@ -47,7 +47,7 @@ shared_examples_for 'engine preventing Angular XSS' do
47
47
  end
48
48
 
49
49
  result.should include('{{unsafe}}')
50
- result.should_not include(' { { unsafe}}')
50
+ result.should_not include('{{ $root.DOUBLE_LEFT_CURLY_BRACE }}unsafe}}')
51
51
  end
52
52
 
53
53
  it 'does escape Angular interpolation marks after the block where AngularXSS is disabled' do
@@ -55,7 +55,7 @@ shared_examples_for 'engine preventing Angular XSS' do
55
55
  end
56
56
  result = html
57
57
 
58
- result.should include(' { { unsafe}}')
58
+ result.should include('{{ $root.DOUBLE_LEFT_CURLY_BRACE }}unsafe}}')
59
59
  result.should_not include('{{unsafe}}')
60
60
  end
61
61
 
@@ -68,7 +68,7 @@ shared_examples_for 'engine preventing Angular XSS' do
68
68
  end
69
69
  }.should raise_error(SomeException)
70
70
 
71
- html.should include(' { { unsafe}}')
71
+ html.should include('{{ $root.DOUBLE_LEFT_CURLY_BRACE }}unsafe}}')
72
72
  html.should_not include('{{unsafe}}')
73
73
  end
74
74
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angular_xss
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
8
  - 3
10
- version: 0.2.3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Henning Koch
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2015-04-17 00:00:00 +02:00
19
- default_executable:
18
+ date: 2017-07-31 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: activesupport
@@ -138,7 +137,6 @@ files:
138
137
  - spec/shared/tests/erb_spec.rb
139
138
  - spec/shared/tests/haml_spec.rb
140
139
  - spec/shared/tests/safe_buffer_spec.rb
141
- has_rdoc: true
142
140
  homepage: https://github.com/makandra/angular_xss
143
141
  licenses:
144
142
  - MIT
@@ -168,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
166
  requirements: []
169
167
 
170
168
  rubyforge_project:
171
- rubygems_version: 1.6.2
169
+ rubygems_version: 1.8.30
172
170
  signing_key:
173
171
  specification_version: 3
174
172
  summary: Patches rails_xss and Haml so AngularJS interpolations are auto-escaped in unsafe strings.
@@ -241,3 +239,4 @@ test_files:
241
239
  - spec/shared/tests/erb_spec.rb
242
240
  - spec/shared/tests/haml_spec.rb
243
241
  - spec/shared/tests/safe_buffer_spec.rb
242
+ has_rdoc: