owasp-esapi-ruby 0.30.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.
Files changed (56) hide show
  1. data/.document +5 -0
  2. data/AUTHORS +5 -0
  3. data/ChangeLog +69 -0
  4. data/ISSUES +0 -0
  5. data/LICENSE +24 -0
  6. data/README +51 -0
  7. data/Rakefile +63 -0
  8. data/VERSION +1 -0
  9. data/lib/codec/base_codec.rb +99 -0
  10. data/lib/codec/css_codec.rb +101 -0
  11. data/lib/codec/encoder.rb +330 -0
  12. data/lib/codec/html_codec.rb +424 -0
  13. data/lib/codec/javascript_codec.rb +119 -0
  14. data/lib/codec/mysql_codec.rb +131 -0
  15. data/lib/codec/oracle_codec.rb +46 -0
  16. data/lib/codec/os_codec.rb +78 -0
  17. data/lib/codec/percent_codec.rb +53 -0
  18. data/lib/codec/pushable_string.rb +114 -0
  19. data/lib/codec/vbscript_codec.rb +64 -0
  20. data/lib/codec/xml_codec.rb +173 -0
  21. data/lib/esapi.rb +68 -0
  22. data/lib/exceptions.rb +37 -0
  23. data/lib/executor.rb +20 -0
  24. data/lib/owasp-esapi-ruby.rb +13 -0
  25. data/lib/sanitizer/xss.rb +59 -0
  26. data/lib/validator/base_rule.rb +90 -0
  27. data/lib/validator/date_rule.rb +92 -0
  28. data/lib/validator/email.rb +29 -0
  29. data/lib/validator/float_rule.rb +76 -0
  30. data/lib/validator/generic_validator.rb +26 -0
  31. data/lib/validator/integer_rule.rb +61 -0
  32. data/lib/validator/string_rule.rb +146 -0
  33. data/lib/validator/validator_error_list.rb +48 -0
  34. data/lib/validator/zipcode.rb +27 -0
  35. data/spec/codec/css_codec_spec.rb +61 -0
  36. data/spec/codec/html_codec_spec.rb +87 -0
  37. data/spec/codec/javascript_codec_spec.rb +45 -0
  38. data/spec/codec/mysql_codec_spec.rb +44 -0
  39. data/spec/codec/oracle_codec_spec.rb +23 -0
  40. data/spec/codec/os_codec_spec.rb +51 -0
  41. data/spec/codec/percent_codec_spec.rb +34 -0
  42. data/spec/codec/vbcript_codec_spec.rb +23 -0
  43. data/spec/codec/xml_codec_spec.rb +83 -0
  44. data/spec/owasp_esapi_encoder_spec.rb +226 -0
  45. data/spec/owasp_esapi_executor_spec.rb +9 -0
  46. data/spec/owasp_esapi_ruby_email_validator_spec.rb +39 -0
  47. data/spec/owasp_esapi_ruby_xss_sanitizer_spec.rb +66 -0
  48. data/spec/owasp_esapi_ruby_zipcode_validator_spec.rb +42 -0
  49. data/spec/spec_helper.rb +10 -0
  50. data/spec/validator/base_rule_spec.rb +29 -0
  51. data/spec/validator/date_rule_spec.rb +40 -0
  52. data/spec/validator/float_rule_spec.rb +31 -0
  53. data/spec/validator/integer_rule_spec.rb +51 -0
  54. data/spec/validator/string_rule_spec.rb +103 -0
  55. data/spec/validator_skeleton.rb +150 -0
  56. metadata +235 -0
@@ -0,0 +1,31 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../spec_helper')
2
+
3
+ module Owasp
4
+ module Esapi
5
+ module Validator
6
+ describe FloatRule do
7
+
8
+ it "should validate 4.3214 as valid within range of -10 to 10" do
9
+ rule = Owasp::Esapi::Validator::FloatRule.new("test",nil,-10,10)
10
+ rule.valid?("","4.3214").should be_true
11
+ end
12
+
13
+ it "should fail to validate -1 for range of 0 to 100" do
14
+ rule = Owasp::Esapi::Validator::FloatRule.new("test",nil,0,100)
15
+ rule.valid?("","-1").should be_false
16
+ end
17
+
18
+ it "should not validate 1e-6 as valid within range of -999999999 to 999999999" do
19
+ rule = Owasp::Esapi::Validator::FloatRule.new("test",nil,-999999999,999999999)
20
+ rule.valid?("","1e-6").should be_true
21
+ end
22
+
23
+ it "should raise an error when a non string is passed in" do
24
+ rule = Owasp::Esapi::Validator::FloatRule.new("test",nil,0,300)
25
+ lambda{ rule.valid("","#{Float::INFINITY}") }.should raise_error(ValidationException)
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,51 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../spec_helper')
2
+
3
+ module Owasp
4
+ module Esapi
5
+ module Validator
6
+ describe IntegerRule do
7
+
8
+ it "should validate 89745 as valid within range of 0 to 1000000" do
9
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,0,10000000)
10
+ rule.valid?("","89745").should be_true
11
+ end
12
+
13
+ it "should fail to validate -1 for range of 0 to 100" do
14
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,0,100)
15
+ rule.valid?("","-1").should be_false
16
+ end
17
+
18
+ it "should validate 0x100 as valid within range of 0 to 300" do
19
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,0,300)
20
+ rule.valid("","0x100").should == 256
21
+ end
22
+
23
+ it "should raise an error when a non string is passed in" do
24
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,0,300)
25
+ lambda{ rule.valid("",100) }.should raise_error(TypeError)
26
+ end
27
+
28
+ it "should validate 0100 as an octal and with range for 0 to 65" do
29
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,0,65)
30
+ rule.valid("","0100").should == 64
31
+ end
32
+
33
+ it "should validate a bit string 0b0001 as 1 within range of 0 to 2" do
34
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,0,2)
35
+ rule.valid("","0b0001").should == 1
36
+ end
37
+
38
+ it "should fail to validate testme as a number within any range" do
39
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,0,2)
40
+ rule.valid?("","testme").should be_false
41
+ end
42
+
43
+ it "should validate -1 within range of -5 t0 5" do
44
+ rule = Owasp::Esapi::Validator::IntegerRule.new("test",nil,-5,5)
45
+ rule.valid?("","-1").should be_true
46
+ end
47
+
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,103 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '../../spec_helper')
2
+
3
+ module Owasp
4
+ module Esapi
5
+ module Validator
6
+ describe StringRule do
7
+ let(:rule) {Owasp::Esapi::Validator::StringRule.new("test")}
8
+ # We will reset teh rule before every test so previous white/blacklist entries dont affect the other
9
+ # test begin executed
10
+ before(:all) { @@rule = Owasp::Esapi::Validator::StringRule.new("test")}
11
+
12
+ describe "Pattern rules" do
13
+ it "should fail to add a nil white list rule" do
14
+ lambda { rule.add_whitelist(nil)}.should raise_error(ArgumentError)
15
+ end
16
+
17
+ it "should fail with an invalid regex" do
18
+ lambda { rule.add_whitelist("_][0}[")}.should raise_error(RegexpError)
19
+ end
20
+
21
+ it "should fail to add a nil black list rule" do
22
+ lambda { rule.add_blacklist(nil)}.should raise_error(ArgumentError)
23
+ end
24
+
25
+ it "should fail with an invalid regex" do
26
+ lambda { rule.add_blacklist("_][0}[")}.should raise_error(RegexpError)
27
+ end
28
+
29
+ it "should reject beg<script>end with blacklist pattern ^.*(<|>).*" do
30
+ beg = "beg <script> end"
31
+ rule.valid("",beg).should == beg
32
+ rule.add_blacklist("^.*(<|>).*")
33
+ lambda { rule.valid("",beg)}.should raise_error(Owasp::Esapi::ValidationException)
34
+ rule.valid("","beg script end").should == "beg script end"
35
+ end
36
+
37
+ it "should accept Magnum44 with whitelist ^[a-zA-Z]*" do
38
+ gun = "Magnum44"
39
+ rule.valid("",gun).should == gun
40
+ rule.add_whitelist("^[a-zA-Z]*")
41
+ lambda { rule.valid("",gun)}.should raise_error(Owasp::Esapi::ValidationException)
42
+ rule.valid("","MagnumPI").should == "MagnumPI"
43
+ end
44
+
45
+ it "should match ^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$ with sal.scotto@gmail.com" do
46
+ rule.add_whitelist("^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,4}$")
47
+ rule.valid?("Email test","sal.scotto@gmail.com").should be_true
48
+ end
49
+
50
+ end
51
+
52
+ describe "Length rules" do
53
+ [
54
+ "12",
55
+ "123456",
56
+ "ABCDEFGHIJKL"
57
+ ].each do |input|
58
+ it "should check valid length for #{input} with min 2 max 12" do
59
+ rule.min = 2
60
+ rule.max = 12
61
+ rule.valid?("",input).should be_true
62
+ end
63
+ end
64
+
65
+ [
66
+ "1",
67
+ "ABCDEFGHIJKLM"
68
+ ].each do |input|
69
+ it "should check invalid lengths for #{input} with min2 max 12" do
70
+ rule.min = 2
71
+ rule.max = 12
72
+ rule.valid?("",input).should be_false
73
+ end
74
+ end
75
+
76
+ it "should add error for invalid lengths" do
77
+ list = Owasp::Esapi::Validator::ValidatorErrorList.new
78
+ rule.min = 2
79
+ rule.max = 12
80
+ rule.validate("","1234567890",list)
81
+ list.errors.should be_empty
82
+ rule.validate("",nil,list)
83
+ list.errors.should have_exactly(1).items
84
+ end
85
+ end
86
+
87
+ describe "Null Rules" do
88
+ it "should allow nil for valid? when set to allow_nil" do
89
+ rule.allow_nil = true
90
+ rule.valid?("",nil).should be_true
91
+ end
92
+
93
+ it "should not allow nil for valid? when allow_nil is false" do
94
+ rule.valid?("",nil).should be_false
95
+ end
96
+
97
+ end
98
+
99
+
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,150 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ ##############
4
+ #
5
+ # Validator Rspec
6
+ # Validation checks that a given input is valid, as as part of the request
7
+ # canicolize the input f requested to check if an item is not only valid but also return the valid input
8
+ # validator, under the covers should use the codec configuration to process underlying encodings
9
+ # example:
10
+ # given input string my&lt;script%20alert('test')%20/&gt;value
11
+ # it canicalization is requested should be first decoded
12
+ # so the input becomes my<script alert('test')/>value BEFORE any validation tests are processed
13
+ # This more generic method means it can be applied to ANY input and doesnt require specific sub classing
14
+ # to handle different classes of string. We apply rules equally on all input going into the application
15
+ # contining the example
16
+ # Owasp::Esapi::Validator.get_valid_input(context,input,type,maxlen,allowNull,canonicalize)
17
+ # would raise a ValidatorError or IntrustionError
18
+ # IntrustionError in this case could be generated by the value encoder during canonicalization
19
+
20
+ module Owasp
21
+ module Esapi
22
+ module Validator
23
+ describe Validator do
24
+ let(:validator) { Owasp::Esapi::Validator}
25
+ let(:allow_null) { false }
26
+ it "should load my validator rules" do
27
+ Owasp::Esapi.load_config("path to my config")
28
+ validator.rule_set.include?("Project.Safe.String")
29
+ end
30
+
31
+ # Valid dates are dates that can be
32
+ # interrupted as real date numbers
33
+ it "should validate my date" do
34
+ date = '2010-13-02'
35
+ validator.get_valid_date("Date input #{date}",date,format,allow_null)
36
+ validator.is_valid_date("Date input #{date}",date,format,allow_null)
37
+ end
38
+
39
+ # Valid credit card is any card number that passes
40
+ # the check digit check
41
+ it "should validate my credit card number" do
42
+ amex = '378282246310005'
43
+ mc = '5105105105105100'
44
+ visa = '4111111111111111'
45
+ validator.get_valid_credit_card("Credit card #{credit}",amex,allow_null)
46
+ validator.is_valid_credit_card("Credit card #{credit}",vis,allow_null)
47
+ end
48
+
49
+ # Validates the request contains the required parameters for a given request
50
+ # and any optional ones indicated
51
+ it "should validate my http request parameters" do
52
+ parms = { :name => :required, :date=>:required, :age=>:optional}
53
+ input = { :name=>"joe",:age=>"15",:date=>'2010-03-11'}
54
+ validator.is_valid_http_params("HTTP Request check #{parms}",parms,input,allow_null)
55
+ validator.get_valid_http_params("HTTP Request check #{parms}",parms,input,allow_null)
56
+ end
57
+
58
+ # escape and properly encode a URI and be safe of css
59
+ it "should validate my uri" do
60
+ uri = "http://www.google.com/my/path"
61
+ validator.is_valid_uri("URI check #{uri}",uri,allow_null)
62
+ validator.get_valid_uri("URI check #{uri}",uri,allow_null)
63
+ end
64
+
65
+ # Should be safe html that is free of scripts/css/attributes/urls/dom manipulation
66
+ it "should validate my html is safe" do
67
+ html = "<head><body>test</body></html>"
68
+ max_len = 50
69
+ validator.is_safe_html("HTML",html,max_len,allow_null)
70
+ validator.get_safe_html("HTML",html,max_len,allow_null)
71
+ end
72
+
73
+ # validte a path on the host
74
+ it "should validate my directory path" do
75
+ path = "/my/path"
76
+ root = "/my"
77
+ validator.is_valid_directory("PATH",path,root,allow_null)
78
+ validator.get_valid_directory("PATH",path,root,allow_null)
79
+ end
80
+
81
+ # validate the filename os valid
82
+ it "should validate my filename" do
83
+ file = "myfile"
84
+ validator.is_valid_filename("File name #{file}",file,allow_null)
85
+ validator.get_valid_filename("File name #{file}",file,allow_null)
86
+ end
87
+
88
+ # validate a number in between a min and max
89
+ it "should validate my number" do
90
+ number = 1.0
91
+ min = 0
92
+ max = 100
93
+ validator.is_valid_number("Number #{number}",number,min,max,allow_null)
94
+ validator.get_valid_number("Number #{number}",number,min,max_allow_null)
95
+ end
96
+
97
+ # check the file contents are valid in the expected encoding, check length
98
+ # run virus scanner
99
+ it "should validate my file contents" do
100
+ file = "myFile"
101
+ mime = "image/*"
102
+ max_len = 100
103
+ validator.is_valid_file_contents("File Contents #{file}",file,mime,max_len)
104
+ validator.get_valid_file_contents("File Contents #{file}",file,mime,max_len)
105
+ end
106
+
107
+ # validate the path, name and contents
108
+ it "should validate my fle upload" do
109
+ file = "test"
110
+ mime = "image/*"
111
+ max_len = 50
112
+ validator.is_valid_upload("Upload #{file}",file,mime,max_len,allow_null)
113
+ validator.get_valid_upload("Upload #{file}",file,mime,max_len,allow_null)
114
+ end
115
+
116
+ # validate the choice is in a given lsit
117
+ it "should validate my list items" do
118
+ list = [:a,:b,:c]
119
+ input = :a
120
+ validator.is_valid_choice("Choice list",input,list,allow_null)
121
+ validator.get_valid_choice("Choice list",input,list,allow_null)
122
+ end
123
+
124
+ # validate the input doesnt contain any non printable characters
125
+ it "should validate my input is printable" do
126
+ input = "ABCDEFGHIJKLMNOP"
127
+ max = 50
128
+ validator.is_valid_printable("Input of some printables",input,max,allow_null)
129
+ validator.get_valid_printable("Input of some printables",input,max,allow_null)
130
+ end
131
+
132
+ # Validate the redirection URI is properly encoded
133
+ it "should validate my redirection" do
134
+ validator.is_valid_redirection("Login redirect",path,allow_null)
135
+ validator.get_valid_redirection("Login redirect",path,allow_null)
136
+ end
137
+
138
+ # Validate some input based on params
139
+ it "should validate my input" do
140
+ input = "bogus"
141
+ input_type = "InputRule"
142
+ canonicalize = true
143
+ max_len = 50
144
+ validator.is_valid_input("Login user name",input,input_type,max_len,allow_null,canonicalize)
145
+ validator.get_valid_input("Login user name",input,input_type,max_len,allow_null,canonicalize)
146
+ end
147
+ end
148
+ end
149
+ end
150
+ end
metadata ADDED
@@ -0,0 +1,235 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: owasp-esapi-ruby
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 30
8
+ - 0
9
+ version: 0.30.0
10
+ platform: ruby
11
+ authors:
12
+ - |-
13
+ Owasp Esapi Ruby core
14
+ ---------------------
15
+
16
+ * Paolo Perego <thesp0nge@owasp.org>
17
+ * Sal Scotto <sal.scotto@gmail.com>
18
+ autorequire:
19
+ bindir: bin
20
+ cert_chain: []
21
+
22
+ date: 2011-03-09 00:00:00 +01:00
23
+ default_executable:
24
+ dependencies:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ prerelease: false
28
+ requirement: &id001 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ segments:
34
+ - 1
35
+ - 2
36
+ - 9
37
+ version: 1.2.9
38
+ type: :development
39
+ version_requirements: *id001
40
+ - !ruby/object:Gem::Dependency
41
+ name: yard
42
+ prerelease: false
43
+ requirement: &id002 !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ segments:
49
+ - 0
50
+ version: "0"
51
+ type: :development
52
+ version_requirements: *id002
53
+ - !ruby/object:Gem::Dependency
54
+ name: nokogiri
55
+ prerelease: false
56
+ requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ segments:
62
+ - 1
63
+ - 4
64
+ - 4
65
+ version: 1.4.4
66
+ type: :development
67
+ version_requirements: *id003
68
+ - !ruby/object:Gem::Dependency
69
+ name: nokogiri
70
+ prerelease: false
71
+ requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ segments:
77
+ - 1
78
+ - 4
79
+ - 4
80
+ version: 1.4.4
81
+ type: :runtime
82
+ version_requirements: *id004
83
+ description: "= The Owasp ESAPI Ruby project\n\n\
84
+ == Introduction\n\n\
85
+ The Owasp ESAPI Ruby is a port for outstanding release quality Owasp ESAPI\n\
86
+ project to the Ruby programming language. \n\n\
87
+ Ruby is now a famous programming language due to its Rails framework developed by David Heinemeier Hansson (http://twitter.com/dhh) that simplify the creation of a web application using a convention over configuration approach to simplify programmers' life.\n\n\
88
+ Despite Rails diffusion, there are a lot of Web framework out there that allow people to write web apps in Ruby (merb, sinatra, vintage) [http://accidentaltechnologist.com/ruby/10-alternative-ruby-web-frameworks/]. Owasp Esapi Ruby wants to bring all Ruby deevelopers a gem full of Secure APIs they can use whatever the framework they choose.\n\n\
89
+ == Why supporting only Ruby 1.9.2 and beyond?\n\n\
90
+ The OWASP Esapi Ruby gem will require at least version 1.9.2 of Ruby interpreter to make sure to have full advantages of the newer language APIs.\n\n\
91
+ In particular version 1.9.2 introduces radical changes in the following areas:\n\n\
92
+ === Regular expression engine\n\
93
+ (to be written)\n\n\
94
+ === UTF-8 support\n\
95
+ Unicode support in 1.9.2 is much better and provides better support for character set encoding/decoding\n\
96
+ * All strings have an additional chunk of info attached: Encoding\n\
97
+ * String#size takes encoding into account \xE2\x80\x93 returns the encoded character count\n\
98
+ * You can get the raw datasize\n\
99
+ * Indexed access is by encoded data \xE2\x80\x93 characters, not bytes\n\
100
+ * You can change encoding by force but it doesn\xE2\x80\x99t convert the data\n\n\
101
+ === Dates and Time\n\
102
+ From \"Programming Ruby 1.9\"\n\n\
103
+ \"As of Ruby 1.9.2, the range of dates that can be represented is no longer limited by the under- lying operating system\xE2\x80\x99s time representation (so there\xE2\x80\x99s no year 2038 problem). As a result, the year passed to the methods gm, local, new, mktime, and utc must now include the century\xE2\x80\x94a year of 90 now represents 90 and not 1990.\"\n\n\
104
+ == Roadmap\n\n\
105
+ Please see ChangeLog file. \n\n\
106
+ == Note on Patches/Pull Requests\n \n\
107
+ * Fork the project.\n\
108
+ * Create documentation with rake yard task\n\
109
+ * Make your feature addition or bug fix.\n\
110
+ * Add tests for it. This is important so I don't break it in a\n future version unintentionally.\n\
111
+ * Commit, do not mess with rakefile, version, or history.\n (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)\n\
112
+ * Send me a pull request. Bonus points for topic branches.\n\n\
113
+ == Copyright\n\n\
114
+ Copyright (c) 2011 the OWASP Foundation. See LICENSE for details.\n"
115
+ email: thesp0nge@owasp.org
116
+ executables: []
117
+
118
+ extensions: []
119
+
120
+ extra_rdoc_files:
121
+ - ChangeLog
122
+ - LICENSE
123
+ - README
124
+ files:
125
+ - .document
126
+ - AUTHORS
127
+ - ChangeLog
128
+ - ISSUES
129
+ - LICENSE
130
+ - README
131
+ - Rakefile
132
+ - VERSION
133
+ - lib/codec/base_codec.rb
134
+ - lib/codec/css_codec.rb
135
+ - lib/codec/encoder.rb
136
+ - lib/codec/html_codec.rb
137
+ - lib/codec/javascript_codec.rb
138
+ - lib/codec/mysql_codec.rb
139
+ - lib/codec/oracle_codec.rb
140
+ - lib/codec/os_codec.rb
141
+ - lib/codec/percent_codec.rb
142
+ - lib/codec/pushable_string.rb
143
+ - lib/codec/vbscript_codec.rb
144
+ - lib/codec/xml_codec.rb
145
+ - lib/esapi.rb
146
+ - lib/exceptions.rb
147
+ - lib/executor.rb
148
+ - lib/owasp-esapi-ruby.rb
149
+ - lib/sanitizer/xss.rb
150
+ - lib/validator/base_rule.rb
151
+ - lib/validator/date_rule.rb
152
+ - lib/validator/email.rb
153
+ - lib/validator/float_rule.rb
154
+ - lib/validator/generic_validator.rb
155
+ - lib/validator/integer_rule.rb
156
+ - lib/validator/string_rule.rb
157
+ - lib/validator/validator_error_list.rb
158
+ - lib/validator/zipcode.rb
159
+ - spec/codec/css_codec_spec.rb
160
+ - spec/codec/html_codec_spec.rb
161
+ - spec/codec/javascript_codec_spec.rb
162
+ - spec/codec/mysql_codec_spec.rb
163
+ - spec/codec/oracle_codec_spec.rb
164
+ - spec/codec/os_codec_spec.rb
165
+ - spec/codec/percent_codec_spec.rb
166
+ - spec/codec/vbcript_codec_spec.rb
167
+ - spec/codec/xml_codec_spec.rb
168
+ - spec/owasp_esapi_encoder_spec.rb
169
+ - spec/owasp_esapi_executor_spec.rb
170
+ - spec/owasp_esapi_ruby_email_validator_spec.rb
171
+ - spec/owasp_esapi_ruby_xss_sanitizer_spec.rb
172
+ - spec/owasp_esapi_ruby_zipcode_validator_spec.rb
173
+ - spec/spec_helper.rb
174
+ - spec/validator/base_rule_spec.rb
175
+ - spec/validator/date_rule_spec.rb
176
+ - spec/validator/float_rule_spec.rb
177
+ - spec/validator/integer_rule_spec.rb
178
+ - spec/validator/string_rule_spec.rb
179
+ - spec/validator_skeleton.rb
180
+ has_rdoc: true
181
+ homepage: http://github.com/thesp0nge/owasp-esapi-ruby
182
+ licenses: []
183
+
184
+ post_install_message:
185
+ rdoc_options: []
186
+
187
+ require_paths:
188
+ - lib
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ none: false
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ segments:
195
+ - 1
196
+ - 9
197
+ - 2
198
+ version: 1.9.2
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ none: false
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ segments:
205
+ - 0
206
+ version: "0"
207
+ requirements: []
208
+
209
+ rubyforge_project:
210
+ rubygems_version: 1.3.7
211
+ signing_key:
212
+ specification_version: 3
213
+ summary: Owasp Enterprise Security APIs for Ruby language
214
+ test_files:
215
+ - spec/codec/css_codec_spec.rb
216
+ - spec/codec/html_codec_spec.rb
217
+ - spec/codec/javascript_codec_spec.rb
218
+ - spec/codec/mysql_codec_spec.rb
219
+ - spec/codec/oracle_codec_spec.rb
220
+ - spec/codec/os_codec_spec.rb
221
+ - spec/codec/percent_codec_spec.rb
222
+ - spec/codec/vbcript_codec_spec.rb
223
+ - spec/codec/xml_codec_spec.rb
224
+ - spec/owasp_esapi_encoder_spec.rb
225
+ - spec/owasp_esapi_executor_spec.rb
226
+ - spec/owasp_esapi_ruby_email_validator_spec.rb
227
+ - spec/owasp_esapi_ruby_xss_sanitizer_spec.rb
228
+ - spec/owasp_esapi_ruby_zipcode_validator_spec.rb
229
+ - spec/spec_helper.rb
230
+ - spec/validator/base_rule_spec.rb
231
+ - spec/validator/date_rule_spec.rb
232
+ - spec/validator/float_rule_spec.rb
233
+ - spec/validator/integer_rule_spec.rb
234
+ - spec/validator/string_rule_spec.rb
235
+ - spec/validator_skeleton.rb