 mosbth    /
                    cimage
                      mosbth    /
                    cimage
                
                            This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
                                via PHP's auto-loading mechanism.
                                                    These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <!doctype html> | ||
| 2 | <html lang=en> | ||
| 3 | <head> | ||
| 4 | <style> | ||
| 5 | |||
| 6 | body { | ||
| 7 | } | ||
| 8 | |||
| 9 | input[type=text] { | ||
| 10 | width: 400px; | ||
| 11 | } | ||
| 12 | |||
| 13 | .hidden { | ||
| 14 | display: none; | ||
| 15 | } | ||
| 16 | |||
| 17 | #wrap { | ||
| 18 | position: relative; | ||
| 19 | overflow: visible; | ||
| 20 | |||
| 21 | } | ||
| 22 | |||
| 23 | .stack { | ||
| 24 | position: absolute; | ||
| 25 | left: 0; | ||
| 26 | top: 0; | ||
| 27 | } | ||
| 28 | |||
| 29 | .area { | ||
| 30 | float: left; | ||
| 31 | padding: 1em; | ||
| 32 | background-color: #eee; | ||
| 33 | } | ||
| 34 | |||
| 35 | .invert { | ||
| 36 | background-color: #666; | ||
| 37 | color: white; | ||
| 38 | } | ||
| 39 | |||
| 40 | .json { | ||
| 41 | min-height: 100px; | ||
| 42 | } | ||
| 43 | |||
| 44 | .top { | ||
| 45 | z-index: 10; | ||
| 46 | } | ||
| 47 | |||
| 48 | </style> | ||
| 49 | </head> | ||
| 50 | |||
| 51 | <body> | ||
| 52 | <h1>Compare images</h1> | ||
| 53 | <p>Add link to images and visually compare them. Change the link och press return to load the image. Add <code>&black</code> to the querystring to get a black background. <a href="http://dbwebb.se/opensource/cimage">Read more...</a></p> | ||
| 54 | |||
| 55 | <p><a id="permalink" href="?">Direct link to this setup.</a></p> | ||
| 56 | |||
| 57 | <form> | ||
| 58 | <p> | ||
| 59 | <label>Image 1: <input type="text" id="input1" data-id="1"></label> <img id="thumb1"></br> | ||
| 60 | <label>Image 2: <input type="text" id="input2" data-id="2"></label> <img id="thumb2"></br> | ||
| 61 | <label>Image 3: <input type="text" id="input3" data-id="3"></label> <img id="thumb3"></br> | ||
| 62 | <label>Image 4: <input type="text" id="input4" data-id="4"></label> <img id="thumb4"></br> | ||
| 63 | <label>Image 5: <input type="text" id="input5" data-id="5"></label> <img id="thumb5"></br> | ||
| 64 | <label>Image 6: <input type="text" id="input6" data-id="6"></label> <img id="thumb6"></br> | ||
| 65 | <label><input type="checkbox" id="viewDetails">Show image details</label><br/> | ||
| 66 | <label><input type="checkbox" id="stack">Stack images?</label><br/> | ||
| 67 | <label><input type="checkbox" id="bg">Dark background?</label> | ||
| 68 | </p> | ||
| 69 | </form> | ||
| 70 | |||
| 71 | <div id="buttonWrap" class="hidden"> | ||
| 72 | <button id="button1" class="button" data-id="1">Image 1</button> | ||
| 73 | <button id="button2" class="button" data-id="2">Image 2</button> | ||
| 74 | <button id="button3" class="button" data-id="3">Image 3</button> | ||
| 75 | <button id="button4" class="button" data-id="4">Image 4</button> | ||
| 76 | <button id="button5" class="button" data-id="5">Image 5</button> | ||
| 77 | <button id="button6" class="button" data-id="6">Image 6</button> | ||
| 78 | </div> | ||
| 79 | |||
| 80 | <div id="wrap"> | ||
| 81 | |||
| 82 | <div id="area1" class="area"> | ||
| 83 | <code>Image 1</code><br> | ||
| 84 | <img id="img1"> | ||
| 85 | <pre id="json1" class="json hidden"></pre> | ||
| 86 | </div> | ||
| 87 | |||
| 88 | <div id="area2" class="area"> | ||
| 89 | <code>Image 2</code><br> | ||
| 90 | <img id="img2"> | ||
| 91 | <pre id="json2" class="json hidden"></pre> | ||
| 92 | </div> | ||
| 93 | |||
| 94 | <div id="area3" class="area"> | ||
| 95 | <code>Image 3</code><br> | ||
| 96 | <img id="img3"> | ||
| 97 | <pre id="json3" class="json hidden"></pre> | ||
| 98 | </div> | ||
| 99 | |||
| 100 | <div id="area4" class="area"> | ||
| 101 | <code>Image 4</code><br> | ||
| 102 | <img id="img4"> | ||
| 103 | <pre id="json4" class="json hidden"></pre> | ||
| 104 | </div> | ||
| 105 | |||
| 106 | <div id="area5" class="area"> | ||
| 107 | <code>Image 5</code><br> | ||
| 108 | <img id="img5"> | ||
| 109 | <pre id="json5" class="json hidden"></pre> | ||
| 110 | </div> | ||
| 111 | |||
| 112 | <div id="area6" class="area"> | ||
| 113 | <code>Image 6</code><br> | ||
| 114 | <img id="img6"> | ||
| 115 | <pre id="json6" class="json hidden"></pre> | ||
| 116 | </div> | ||
| 117 | |||
| 118 | </div> | ||
| 119 | |||
| 120 | |||
| 121 | </body> | ||
| 122 | |||
| 123 | <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> | ||
| 124 | <script src="../js/cimage.js"></script> | ||
| 125 | <script> | ||
| 126 | <?php | ||
| 127 | if (isset($_GET['input1'])) { | ||
| 128 | // Use incoming from querystring as defaults | ||
| 129 | ?> | ||
| 130 |     CImage.compare({ | ||
| 131 | "input1": "<?=$_GET['input1']?>", | ||
| 0 ignored issues–
                            show | |||
| 132 | "input2": "<?=$_GET['input2']?>", | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['input2']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 133 | "input3": "<?=$_GET['input3']?>", | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['input3']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 134 | "input4": "<?=$_GET['input4']?>", | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['input4']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 135 | "input5": "<?=$_GET['input5']?>", | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['input5']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 136 | "input6": "<?=$_GET['input6']?>", | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['input6']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 137 | "json": <?=$_GET['json']?>, | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['json']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 138 | "stack": <?=$_GET['stack']?>, | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['stack']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 139 | "bg": <?=$_GET['bg']?> | ||
| 0 ignored issues–
                            show             Security
    
            Cross-Site Scripting
    
    
        introduced 
                            by  $_GET['bg']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.Preventing Cross-Site-Scripting AttacksCross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user. In order to prevent this, make sure to escape all user-provided data: 
// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);
// for URLs
$sanitized = urlencode($tainted);
General Strategies to prevent injectionIn general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values: 
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}For numeric data, we recommend to explicitly cast the data: $sanitized = (integer) $tainted; Loading history... | |||
| 140 | }); | ||
| 141 | <?php | ||
| 142 | } elseif (isset($script)) { | ||
| 143 | // Use default setup from js configuration | ||
| 144 | echo $script; | ||
| 145 | } else { | ||
| 146 | // Use defaults | ||
| 147 |     echo "CImage.compare({});"; | ||
| 148 | } ?> | ||
| 149 | </script> | ||
| 150 | |||
| 151 | </html> | ||
| 152 | 
 
                                
$_GET['input1']can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.1 path for user data to reach this point
$_GETin webroot/compare/compare.php on line 131
Preventing Cross-Site-Scripting Attacks
Cross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user.
In order to prevent this, make sure to escape all user-provided data:
General Strategies to prevent injection
In general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values:
if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) { throw new \InvalidArgumentException('This input is not allowed.'); }For numeric data, we recommend to explicitly cast the data: