These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /** |
||
3 | * Mage Scan |
||
4 | * |
||
5 | * PHP version 5 |
||
6 | * |
||
7 | * @category MageScan |
||
8 | * @package MageScan |
||
9 | * @author Steve Robbins <[email protected]> |
||
10 | * @copyright 2015 Steve Robbins |
||
11 | * @license http://creativecommons.org/licenses/by/4.0/ CC BY 4.0 |
||
12 | * @link https://github.com/steverobbins/magescan |
||
13 | */ |
||
14 | |||
15 | require_once '../vendor/autoload.php'; |
||
16 | |||
17 | use MageScan\Url; |
||
18 | use MageScan\Request; |
||
19 | |||
20 | $suggestUrl = ''; |
||
21 | if (isset($_GET['url'])) { |
||
22 | $url = $_GET['url']; |
||
23 | $magescanUrl = new Url; |
||
24 | $url = $magescanUrl->clean(urldecode($_GET['url'])); |
||
25 | $request = new Request($url, false); |
||
26 | $response = $request->get($url); |
||
0 ignored issues
–
show
|
|||
27 | $headers = $response->getHeaders(); |
||
28 | if (isset($headers['Location'])) { |
||
29 | $suggestUrl = $headers['Location']; |
||
30 | } |
||
31 | $suggestUrl = trim($suggestUrl, '/'); |
||
32 | } else { |
||
33 | $url = false; |
||
34 | } |
||
35 | |||
36 | ?><!DOCTYPE html> |
||
37 | <html> |
||
38 | <head> |
||
39 | <meta charset="UTF-8"> |
||
40 | <title>Mage Scan<?php echo $url ? ' - ' .$url : '' ?></title> |
||
41 | <meta name="viewport" content="width=device-width, initial-scale=1"> |
||
42 | <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"> |
||
43 | <link rel="stylesheet" href="css/loaders.min.css"> |
||
44 | <link rel="stylesheet" href="css/style.css"> |
||
45 | </head> |
||
46 | <body> |
||
47 | <nav class="navbar navbar-inverse"> |
||
48 | <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> |
||
49 | <span class="sr-only">Toggle navigation</span> |
||
50 | <span class="icon-bar"></span> |
||
51 | <span class="icon-bar"></span> |
||
52 | <span class="icon-bar"></span> |
||
53 | </button> |
||
54 | <div class="container"> |
||
55 | <div class="navbar-header"> |
||
56 | <a class="navbar-brand" href="/">Mage Scan <?php echo file_get_contents('download/version') ?></a> |
||
57 | </div> |
||
58 | <div id="navbar" class="navbar-collapse collapse"> |
||
59 | <ul class="nav navbar-nav"> |
||
60 | <li><a href="https://github.com/steverobbins/magescan">GitHub</a></li> |
||
61 | <li><a href="download/magescan.phar">Download <strong>magescan.phar</strong></a></li> |
||
62 | </ul> |
||
63 | </div> |
||
64 | </div> |
||
65 | </nav> |
||
66 | <div class="container"> |
||
67 | <div class="page-header"> |
||
68 | <h1>Scan Your Magento Store</h1> |
||
69 | </div> |
||
70 | <form id="magescan-form" method="get" action="/"> |
||
71 | <fieldset> |
||
72 | <input type="text" placeholder="http://store.example.com/" autofocus="autofocus" name="url"<?php echo $url ? ' value="' . $url . '"' : '' ?> /> |
||
73 | <input type="submit" value="Scan" /> |
||
74 | </fieldset> |
||
75 | </form> |
||
76 | <?php if ($suggestUrl && $url != $suggestUrl): ?> |
||
77 | <div class="suggest"> |
||
78 | Did you mean <a href="?url=<?php echo urlencode($suggestUrl) ?>"><?php echo $suggestUrl ?></a>? |
||
79 | </div> |
||
80 | <?php endif ?> |
||
81 | </div> |
||
82 | <?php if ($url): ?> |
||
83 | <div class="container"> |
||
84 | <div class="page-header"> |
||
85 | <h2>Results for <a href="<?php echo $url ?>"><?php echo $url ?></a></h2> |
||
86 | </div> |
||
87 | <div id="results"> |
||
88 | <div class="row"> |
||
89 | <div class="col-sm-4" id="magentoinfo"> |
||
90 | <div class="panel panel-default"> |
||
91 | <div class="panel-heading"> |
||
92 | <h3 class="panel-title">Magento</h3> |
||
93 | </div> |
||
94 | <div class="panel-body response"> |
||
95 | <div class="loader"> |
||
96 | <div class="loader-inner ball-clip-rotate-multiple"> |
||
97 | <div></div> |
||
98 | <div></div> |
||
99 | </div> |
||
100 | </div> |
||
101 | </div> |
||
102 | </div> |
||
103 | </div> |
||
104 | <div class="col-sm-4" id="sitemap"> |
||
105 | <div class="panel panel-default"> |
||
106 | <div class="panel-heading"> |
||
107 | <h3 class="panel-title">Sitemap</h3> |
||
108 | </div> |
||
109 | <div class="panel-body response"> |
||
110 | <div class="loader"> |
||
111 | <div class="loader-inner ball-clip-rotate-multiple"> |
||
112 | <div></div> |
||
113 | <div></div> |
||
114 | </div> |
||
115 | </div> |
||
116 | </div> |
||
117 | </div> |
||
118 | </div> |
||
119 | <div class="col-sm-4" id="catalog"> |
||
120 | <div class="panel panel-default"> |
||
121 | <div class="panel-heading"> |
||
122 | <h3 class="panel-title">Catalog <span class="label label-info">?</span></h3> |
||
123 | </div> |
||
124 | <div class="panel-body"> |
||
125 | <div class="alert alert-info">This only includes visible and enabled entities for this store view.</div> |
||
126 | <div class="response"> |
||
127 | <div class="loader"> |
||
128 | <div class="loader-inner ball-clip-rotate-multiple"> |
||
129 | <div></div> |
||
130 | <div></div> |
||
131 | </div> |
||
132 | </div> |
||
133 | </div> |
||
134 | </div> |
||
135 | </div> |
||
136 | </div> |
||
137 | </div> |
||
138 | <div class="row"> |
||
139 | <div class="col-sm-4"> |
||
140 | <div class="panel panel-default" id="servertech"> |
||
141 | <div class="panel-heading"> |
||
142 | <h3 class="panel-title">Technology</h3> |
||
143 | </div> |
||
144 | <div class="panel-body response"> |
||
145 | <div class="loader"> |
||
146 | <div class="loader-inner ball-clip-rotate-multiple"> |
||
147 | <div></div> |
||
148 | <div></div> |
||
149 | </div> |
||
150 | </div> |
||
151 | </div> |
||
152 | </div> |
||
153 | <div class="panel panel-default" id="patch"> |
||
154 | <div class="panel-heading"> |
||
155 | <h3 class="panel-title">Patches</h3> |
||
156 | </div> |
||
157 | <div class="panel-body"> |
||
158 | <div class="magereport"> |
||
159 | Need help? View report on <a href="https://www.magereport.com/scan/?s=<?php echo urlencode($url) ?>">MageReport.com</a> |
||
160 | </div> |
||
161 | <div class="response"> |
||
162 | <div class="loader"> |
||
163 | <div class="loader-inner ball-clip-rotate-multiple"> |
||
164 | <div></div> |
||
165 | <div></div> |
||
166 | </div> |
||
167 | </div> |
||
168 | </div> |
||
169 | </div> |
||
170 | </div> |
||
171 | <div class="panel panel-default" id="modules"> |
||
172 | <div class="panel-heading"> |
||
173 | <h3 class="panel-title">Modules</h3> |
||
174 | </div> |
||
175 | <div class="panel-body response"> |
||
176 | <div class="loader"> |
||
177 | <div class="loader-inner ball-clip-rotate-multiple"> |
||
178 | <div></div> |
||
179 | <div></div> |
||
180 | </div> |
||
181 | </div> |
||
182 | </div> |
||
183 | </div> |
||
184 | </div> |
||
185 | <div class="col-sm-8" id="unreachablepath"> |
||
186 | <div class="panel panel-default"> |
||
187 | <div class="panel-heading"> |
||
188 | <h3 class="panel-title">Sensitive URLs <span class="label label-info">?</span></h3> |
||
189 | </div> |
||
190 | <div class="panel-body"> |
||
191 | <div class="alert alert-info">These are URLs that may reveal sensative information about the system. They shouldn't be visible to the public.</div> |
||
192 | <div class="response"> |
||
193 | <div class="loader"> |
||
194 | <div class="loader-inner ball-clip-rotate-multiple"> |
||
195 | <div></div> |
||
196 | <div></div> |
||
197 | </div> |
||
198 | </div> |
||
199 | </div> |
||
200 | </div> |
||
201 | </div> |
||
202 | </div> |
||
203 | </div> |
||
204 | </div> |
||
205 | </div> |
||
206 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> |
||
207 | <script src="js/script.js"></script> |
||
208 | <script> |
||
209 | jQuery(document).ready(function() { |
||
210 | MageScan.scan('<?php echo $url ?>'); |
||
211 | }) |
||
212 | </script> |
||
213 | <?php endif ?> |
||
214 | <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> |
||
215 | <script> |
||
216 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
||
217 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
||
218 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
||
219 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); |
||
220 | ga('create', 'UA-16126282-21', 'auto'); |
||
221 | ga('send', 'pageview'); |
||
222 | </script> |
||
223 | </body> |
||
224 | </html> |
||
225 |
If you implement
__call
and you know which methods are available, you can improve IDE auto-completion and static analysis by adding a @method annotation to the class.This is often the case, when
__call
is implemented by a parent class and only the child class knows which methods exist: