1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?php
- declare(strict_types=1);
- /*
- * This file is part of the nelexa/zip package.
- * (c) Ne-Lexa <https://github.com/Ne-Lexa/php-zip>
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace PhpZip\Tests;
- use PhpZip\Exception\ZipException;
- use PhpZip\ZipFile;
- /**
- * Class ZipSlipVulnerabilityTest.
- *
- * @see https://github.com/Ne-Lexa/php-zip/issues/39 Issue#31
- * @see https://snyk.io/research/zip-slip-vulnerability Zip Slip Vulnerability
- *
- * @internal
- *
- * @small
- */
- class ZipSlipVulnerabilityTest extends ZipTestCase
- {
- /**
- * @throws ZipException
- */
- public function testCreateSlipVulnerabilityFile(): void
- {
- $localFile = '../dir/./../../file.txt';
- $zipFile = new ZipFile();
- $zipFile->addFromString($localFile, 'contents');
- static::assertContains($localFile, $zipFile->getListFiles());
- $zipFile->close();
- }
- /**
- * @throws ZipException
- */
- public function testUnpack(): void
- {
- static::assertTrue(mkdir($this->outputDirname, 0755, true));
- $zipFile = new ZipFile();
- $zipFile->addFromString('../dir/./../../file.txt', 'contents');
- $zipFile->extractTo($this->outputDirname);
- $zipFile->close();
- $expectedExtractedFile = $this->outputDirname . '/dir/file.txt';
- static::assertTrue(is_file($expectedExtractedFile));
- }
- }
|