From c61c394ab57ad5cc60fc0e2e5749f411ca16c88a Mon Sep 17 00:00:00 2001 From: Juliana Rodrigueiro Date: Sun, 30 Jul 2017 13:34:16 +0200 Subject: [PATCH] Encode target url and adapted unit tests --- src/restricted_html.cpp | 2 +- test/test_restricted_html.cpp | 36 +++++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/restricted_html.cpp b/src/restricted_html.cpp index 705d927..52e68ec 100644 --- a/src/restricted_html.cpp +++ b/src/restricted_html.cpp @@ -98,7 +98,7 @@ bool link_sanitizer(string &tag) if (link.find("javascript:") != string::npos) return false; - tag = AHREF + "\"" + REDIRECT_PREFIX + link + "\" " + TARGET_BLANK + ">"; + tag = AHREF + "\"" + REDIRECT_PREFIX + encode_url(link) + "\" " + TARGET_BLANK + ">"; return true; } diff --git a/test/test_restricted_html.cpp b/test/test_restricted_html.cpp index b32e403..b4d21ae 100644 --- a/test/test_restricted_html.cpp +++ b/test/test_restricted_html.cpp @@ -36,7 +36,7 @@ BOOST_AUTO_TEST_SUITE(test_restricted_html) BOOST_AUTO_TEST_CASE(BasicTest) { string output = restrict_html("

Table

Month Savings
January $100

Paragraph with a Acceptable Link.

"); - BOOST_CHECK_EQUAL(string("

Table

Month Savings
January $100

Paragraph with a Acceptable Link.

"), output); + BOOST_CHECK_EQUAL(string("

Table

Month Savings
January $100

Paragraph with a Acceptable Link.

"), output); } BOOST_AUTO_TEST_CASE(ScriptInjection) @@ -90,7 +90,7 @@ BOOST_AUTO_TEST_CASE(ExtraAttribute3) BOOST_AUTO_TEST_CASE(AhrefLink) { string output = restrict_html("test"); - BOOST_CHECK_EQUAL(string("test"), output); + BOOST_CHECK_EQUAL(string("test"), output); } BOOST_AUTO_TEST_CASE(AhrefLink2) @@ -102,7 +102,7 @@ BOOST_AUTO_TEST_CASE(AhrefLink2) BOOST_AUTO_TEST_CASE(AhrefProtocol) { string output = restrict_html("foo"); - BOOST_CHECK_EQUAL(string("foo"), output); + BOOST_CHECK_EQUAL(string("foo"), output); } BOOST_AUTO_TEST_CASE(AhrefWrongProtocol) @@ -135,6 +135,36 @@ BOOST_AUTO_TEST_CASE(UnsafeURLChars2) BOOST_CHECK_EQUAL(string(" Test Me!!"), output); } +BOOST_AUTO_TEST_CASE(EncodedURL) +{ + string output = restrict_html("test"); + BOOST_CHECK_EQUAL(string("test"), output); +} + +BOOST_AUTO_TEST_CASE(InvalidRedirection) +{ + string output = restrict_html("test"); + BOOST_CHECK_EQUAL(string("test"), output); +} + +BOOST_AUTO_TEST_CASE(InvalidRedirection2) +{ + string output = restrict_html("test"); + BOOST_CHECK_EQUAL(string("test"), output); +} + +BOOST_AUTO_TEST_CASE(InvalidTag) +{ + string output = restrict_html(""); + BOOST_CHECK_EQUAL(string("alert('XSS');"), output); +} + +BOOST_AUTO_TEST_CASE(InvalidTag2) +{ + string output = restrict_html(""); + BOOST_CHECK_EQUAL(string(""), output); +} + BOOST_AUTO_TEST_CASE(DecodeStringURL) { string output = decode_url("%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D"); -- 1.7.1