Skip to content

Commit 8f02ab1

Browse files
Copilotgeoffw0
andcommitted
Add test cases for actix-web, poem, and http-types cookie secure attribute
Co-authored-by: geoffw0 <[email protected]>
1 parent 2497d8c commit 8f02ab1

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

rust/ql/test/query-tests/security/CWE-614/main.rs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,63 @@ fn test_qhelp_examples() {
188188
}
189189
}
190190

191+
fn test_actix_web() {
192+
// actix-web re-exports the cookie crate
193+
use actix_web::cookie::Cookie as ActixCookie;
194+
195+
// secure set to false
196+
let cookie1 = ActixCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie]
197+
println!("actix-web cookie1 = '{}'", cookie1.to_string());
198+
199+
// secure set to true
200+
let cookie2 = ActixCookie::build("name", "value").secure(true).finish(); // good
201+
println!("actix-web cookie2 = '{}'", cookie2.to_string());
202+
203+
// secure left as default
204+
let cookie3 = ActixCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie]
205+
println!("actix-web cookie3 = '{}'", cookie3.to_string());
206+
}
207+
208+
fn test_poem() {
209+
use poem::web::cookie::Cookie as PoemCookie;
210+
211+
// secure set to false
212+
let cookie1 = PoemCookie::build("name", "value").secure(false).finish(); // $ Alert[rust/insecure-cookie]
213+
println!("poem cookie1 = '{}'", cookie1.to_string());
214+
215+
// secure set to true
216+
let cookie2 = PoemCookie::build("name", "value").secure(true).finish(); // good
217+
println!("poem cookie2 = '{}'", cookie2.to_string());
218+
219+
// secure left as default
220+
let cookie3 = PoemCookie::build("name", "value").finish(); // $ Alert[rust/insecure-cookie]
221+
println!("poem cookie3 = '{}'", cookie3.to_string());
222+
}
223+
224+
fn test_http_types() {
225+
use http_types::Cookie as HttpTypesCookie;
226+
227+
// secure set to false
228+
let mut cookie1 = HttpTypesCookie::new("name", "value");
229+
cookie1.set_secure(false); // $ Source
230+
println!("http-types cookie1 = '{}'", cookie1.to_string()); // $ Alert[rust/insecure-cookie]
231+
232+
// secure set to true
233+
let mut cookie2 = HttpTypesCookie::new("name", "value");
234+
cookie2.set_secure(true); // good
235+
println!("http-types cookie2 = '{}'", cookie2.to_string());
236+
237+
// secure left as default
238+
let cookie3 = HttpTypesCookie::new("name", "value"); // $ Source
239+
println!("http-types cookie3 = '{}'", cookie3.to_string()); // $ Alert[rust/insecure-cookie]
240+
}
241+
191242
fn main() {
192243
test_cookie(true);
193244
test_cookie(false);
194245
test_biscotti();
195246
test_qhelp_examples();
247+
test_actix_web();
248+
test_poem();
249+
test_http_types();
196250
}

rust/ql/test/query-tests/security/CWE-614/options.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ qltest_cargo_check: true
22
qltest_dependencies:
33
- cookie = { version = "0.18.1", features = ["percent-encode", "signed", "private"] }
44
- biscotti = { version = "0.4.3" }
5+
- actix-web = { version = "4" }
6+
- poem = { version = "3" }
7+
- http-types = { version = "2" }

0 commit comments

Comments
 (0)