thinkphp的一个小BUG
前两天发现自己网站莫名其妙的多了一下文件
原文地址:http://bbs.csdn.net/topics/390469279
今早观察了一下这些莫名其妙的HTML文件,终于找到问题所在!!!
原因:
如果开启静态缓存,在静态规则中带有参数,例如
//静态缓存 'HTML_CACHE_ON'=>true, 'HTML_CACHE_RULES'=> array( 'infor:search' => array('home/{:module}/{:action}/{key}'), ),
举例说明
{key}=test
Html/home/Infor/search/test.html
{key}=../boot
Html/home/Infor/boot.html
是的第二个静态文件HTML飞到了上级目录,所以服务器目录多了很多文件和文件夹。
这个应该算是thinkphp的一个小BUG,虽然不会对网站照成危害但是很烦人
解决的方法也很简单
就是静态规则不要直接用参数,推荐大家用MD5处理{$_SERVER.REQUEST_URI|md5}
机智的?丝
回复讨论(解决方案)
过来看看,静态缓存用的比较少。
这不是 thinkphp 的 bug
很自然的你要为你自己的行为负责
对于你示例的规则,若 key = ../boot
由 $rule = preg_replace('/{(\w+)}/e',"\$_GET['\\1']",$rule);
可知,被解释成 home/MODULE_NAME/ACTION_NAME/../boot
TP 有什么理由要阻止你把静态文件放在上级目录中?
这不是 thinkphp 的 bug
很自然的你要为你自己的行为负责
对于你示例的规则,若 key = ../boot
由 $rule = preg_replace('/{(\w+)}/e',"\$_GET['\\1']",$rule);
可知,被解释成 home/MODULE_NAME/ACTION_NAME/../boot
TP 有什么理由要阻止你把静态文件放在上级目录中?
我觉得TP应该考虑一下{key}参数的过滤。
如果要过滤,也得是你给规则、写代码
至少类似 http://bbs.csdn.net/topics/390469279/..x 这样的url并不能构成攻击
你不能指望人家把什么都替你做了,毕竟他只是个开发工具。
如果是 dede 出现这种现象,才能说是 bug

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...
