PHP: рдкрдереЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдмрд┐рдВрджреБ
рджреЛ рдиреЛрдЯ
- рдкрде рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: рдЕрдиреБрдорддрд┐ рджреЗрдВ рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ
рд╢реАрд░реНрд╖ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдкрде рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ
рдЯрд╛рдЗрдореНрд╕ред
рдпрджрд┐ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдиреБрд░реЛрдзрд┐рдд рдкрде рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬреЛ рд╢реАрд░реНрд╖ рдЕрдиреБрдордд рд╕реНрддрд░ рдкрд░ рд╣реИ
// $ $ рд╣реЛрдиреЗ рджреЗрдВ [] = "рдХреБрдЫ /../ рдкрде / рд╕реЗ / рдлрд╝рд╛рдЗрд▓"; $ рдкрде [] = "/ рдЕрдиреНрдп / рдкрде / рд╕реЗ / рдлрд╝рд╛рдЗрд▓"; // рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдордд рдкрде $ restriced_path = dirname (__ FILE __)ред "/"; // рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ $ real_path [0] = realpath ($ path1); // -> "/ рдкрде / рд╕реЗ / рдЕрдкрдиреЗ / рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд / рдкрде / рд╕реЗ / рдлрд╝рд╛рдЗрд▓" $ real_path [1] = realpath ($ path2); // -> "/ рдЕрдиреНрдп / рдкрде / рд╕реЗ / рдлрд╝рд╛рдЗрд▓" // рдЙрдиреНрд╣реЗрдВ рдЪреЗрдХ рдХрд░реЗрдВ foreach ($ path_ рдХреЗ рд░реВрдк рдореЗрдВ $ real_path) {if (($ r = strpos ($ pathn, $ restriced_path))! == рдЭреВрдард╛ рдФрд░ $ $ =! = 0) {рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "рдкрде $ рдкрдерди рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ"; } рдФрд░ рдЧреВрдВрдЬ "рдкрде $ рдкрдерди рд╡рдВрдЪрд┐рдд"; }
рджреЛред
рдпрджрд┐ рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдореЗрдВ рдХрдЯреМрддреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдпрд╛рдиреА / dir / path / to / file -> / path / to / file
$ рдкрде = "/ dir / рдкрде / рд╕реЗ / рдлрд╝рд╛рдЗрд▓";
$ рдкрде = ltrim ($ рдкрде, "\\ /");
$ рдкрде = strpbrk ($ рдкрде, "\\ /");
рдЗрдХреЛ $ рдкрде;
рдмрд╕ рдЗрддрдирд╛ рд╣реА
Source: https://habr.com/ru/post/In18070/
All Articles