diff options
author | ivan <ivan> | 2011-04-18 23:15:19 +0000 |
---|---|---|
committer | ivan <ivan> | 2011-04-18 23:15:19 +0000 |
commit | b5c4237a34aef94976bc343c8d9e138664fc3984 (patch) | |
tree | ba7cb2c13c199b1012c661fcf4f248e7b7e3d36f /rt/t/web/path-traversal.t | |
parent | 96a0d937cdfe26d691e59139088e33e0bc3e1184 (diff) | |
parent | 75162bb14b3e38d66617077843f4dfdcaf09d5c4 (diff) |
This commit was generated by cvs2svn to compensate for changes in r11022,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'rt/t/web/path-traversal.t')
-rw-r--r-- | rt/t/web/path-traversal.t | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/rt/t/web/path-traversal.t b/rt/t/web/path-traversal.t new file mode 100644 index 000000000..8d2f5cc88 --- /dev/null +++ b/rt/t/web/path-traversal.t @@ -0,0 +1,40 @@ +use strict; +use warnings; + +use RT::Test tests => 20; + +my ($baseurl, $agent) = RT::Test->started_ok; + +$agent->get("$baseurl/NoAuth/../Elements/HeaderJavascript"); +is($agent->status, 400); +$agent->warning_like(qr/Invalid request.*aborting/,); + +$agent->get("$baseurl/NoAuth/../%45lements/HeaderJavascript"); +is($agent->status, 400); +$agent->warning_like(qr/Invalid request.*aborting/,); + +$agent->get("$baseurl/NoAuth/%2E%2E/Elements/HeaderJavascript"); +is($agent->status, 400); +$agent->warning_like(qr/Invalid request.*aborting/,); + +$agent->get("$baseurl/NoAuth/../../../etc/RT_Config.pm"); +is($agent->status, 400); +$agent->warning_like(qr/Invalid request.*aborting/,); + +$agent->get("$baseurl/NoAuth/css/web2/images/../../../../../../etc/RT_Config.pm"); +is($agent->status, 400); +$agent->warning_like(qr/Invalid request.*aborting/,); + +# do not reject these URLs, even though they contain /. outside the path +$agent->get("$baseurl/index.html?ignored=%2F%2E"); +is($agent->status, 200); + +$agent->get("$baseurl/index.html?ignored=/."); +is($agent->status, 200); + +$agent->get("$baseurl/index.html#%2F%2E"); +is($agent->status, 200); + +$agent->get("$baseurl/index.html#/."); +is($agent->status, 200); + |