fix: oprava kritických bezpečnostních chyb a bugů z code review
- SEC-1: nahrazen exec('fsutil') za PHP-native is_link()+realpath() v NasFileManager - eliminace command injection
- SEC-2: přidáno ověření aktuálního hesla při změně hesla (profile.php + DashProfile.jsx)
- BUG-1: attendance punch obalen do transakce s SELECT FOR UPDATE - prevence race condition při dvojkliku
- BUG-2: eliminován N+1 SQL dotaz pro VAT v invoice listu - výpočet přesunut do subquery
- BUG-5/6: delete a update attendance záznamů obaleny do transakcí - prevence nekonzistentního stavu
- BUG-7: opravena duplikace nabídky - přidáno chybějící pole unit v offer items
ESLint: 0 errors | PHPCS: 0 errors | Build: OK
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
6
dist/api/includes/NasFileManager.php
vendored
6
dist/api/includes/NasFileManager.php
vendored
@@ -560,12 +560,12 @@ class NasFileManager
|
||||
return false;
|
||||
}
|
||||
|
||||
$attr = @exec('fsutil reparsepoint query "' . str_replace('/', '\\', $path) . '" 2>NUL');
|
||||
if ($attr !== false && $attr !== '') {
|
||||
// PHP is_link detekuje symlinky
|
||||
if (is_link($path)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Fallback - realpath se lisi od puvodniho path u junction
|
||||
// Junction detekce pres porovnani realpath vs zadana cesta
|
||||
$real = realpath($path);
|
||||
$normalized = str_replace('\\', '/', $path);
|
||||
$normalReal = str_replace('\\', '/', (string) $real);
|
||||
|
||||
Reference in New Issue
Block a user