javascript - %0a(换行符)的执行解析过程
test.php
文件的代码如下:
<code> <!--情况1--> <script type="text/javascript"> //var a = "<?php echo $_GET['input'];?>"; </script> <!--情况2--> <script type="text/javascript"> //var a = "start_%0a_end"; </script> </code>
情况1:
变量a的值是可控的,由参数input决定,
所以,当从浏览器访问:http://127.0.0.1/test.php?input=start_%0a_end
的时候
查看网页源代码,结果如下:
<code>//省略…… <!--情况1--> <script type="text/javascript"> //var a = start_ _end; </script> <!--情况2--> <script type="text/javascript"> //var a = "start_%0a_end"; </script> //省略…… </code>
我们可以发现,情况1中,出现了换行,而情况2保持原样。
为什么会出现这种情况呢?
谁能帮忙详细讲解下其中的原理吗?
说下我对此问题的看法:
当客户端访问网址(http://127.0.0.1/test.php?input=start_%0a_end)的时候,由于是php文件,所以服务端会交个Apache服务器解析执行,并把结果返回给服务端,服务端再将结果通过http响应返回给客户端(浏览器),浏览器再将页面渲染出来,呈现给用户。
用户--->浏览器--->服务器--->apache
那么,
换行到底是:
1.出现在Apache的解析执行的阶段
2.还是浏览器将最终结果呈现给用户这一阶段
如果是出现在Apache的解析执行阶段,那么<?php echo "start_%0a_end";?>
应该也会出现换行,但实际上并没有
而如果换行是出现在:浏览器的渲染阶段,那么
<code><br><br><script type="text/javascript"> var a = "start_%0a_end";//注意:此行没有注释 </script> </code>
应该也会出现换行才是,但实际上也没有
回复内容:
test.php
文件的代码如下:
<code> <!--情况1--> <script type="text/javascript"> //var a = "<?php echo $_GET['input'];?>"; </script> <!--情况2--> <script type="text/javascript"> //var a = "start_%0a_end"; </script> </code>
情况1:
变量a的值是可控的,由参数input决定,
所以,当从浏览器访问:http://127.0.0.1/test.php?input=start_%0a_end
的时候
查看网页源代码,结果如下:
<code>//省略…… <!--情况1--> <script type="text/javascript"> //var a = start_ _end; </script> <!--情况2--> <script type="text/javascript"> //var a = "start_%0a_end"; </script> //省略…… </code>
我们可以发现,情况1中,出现了换行,而情况2保持原样。
为什么会出现这种情况呢?
谁能帮忙详细讲解下其中的原理吗?
说下我对此问题的看法:
当客户端访问网址(http://127.0.0.1/test.php?input=start_%0a_end)的时候,由于是php文件,所以服务端会交个Apache服务器解析执行,并把结果返回给服务端,服务端再将结果通过http响应返回给客户端(浏览器),浏览器再将页面渲染出来,呈现给用户。
用户--->浏览器--->服务器--->apache
那么,
换行到底是:
1.出现在Apache的解析执行的阶段
2.还是浏览器将最终结果呈现给用户这一阶段
如果是出现在Apache的解析执行阶段,那么<?php echo "start_%0a_end";?>
应该也会出现换行,但实际上并没有
而如果换行是出现在:浏览器的渲染阶段,那么
<code><br><br><script type="text/javascript"> var a = "start_%0a_end";//注意:此行没有注释 </script> </code>
应该也会出现换行才是,但实际上也没有
接 @安坚实
的答案,query string
由于地址栏显示、日志记录、或者转义等各方面的需要,必须将部分字符进行翻译(比如无法显示的字符、有特殊含义的控制字符等)
所以你在百度搜索一个
&
符号的时候 访问到的链接 实际是http://www.baidu.com/s?wd=%26
因为这个字符与query string中的参数连接符
冲突了,需要进行转义
这个过程就是一个编码的过程,这样的编码算法最常见的就是 URLEncode
和 Base64Encode
而此处使用的是 URLEncode
,这个是在 RFC 3986 中定义的
服务端收到了这个请求时,先原样记录在日志中,然后将参数变成应用程序里的字符串 交给web应用处理
这个时候就需要进行一个解码过程,否则得到的数据就与预期不一致了
接上面那个例子,我想搜索的是 字符串
&
而不是 字符串%26
,因此需要解码变回&
再解释LZ的例子,浏览器中访问http://127.0.0.1/test.php?input=start_%0a_end
时,
其实input这个参数的实际值 并不是 start_%0a_end
这个字符串,只是因为地址栏无法显示换行符,将换行符进行了转义, 他的实际值就是start_[换行]_end
,页面输出时,将他还原成了[换行]
如果你想要指定 input参数的实际值为 start_%0a_end
, 需要将%
做一次转义,变为 %25
尝试访问一下 http://127.0.0.1/test.php?input=start_%250a_end
解析过程其实是这样的:
用户 --> 浏览器 --> 服务器 --> apache --> PHP解释器
首先,start_%0a_end
被传递给PHP解释器时,%0a 并没有被转换成换行。
<code>var_dump($_SERVER['QUERY_STRING']); # string(19) "input=start_%0a_end" </code>
但是,当它被写入到 $_GET 全局数组里时,就变成换行了
<code>var_dump($_GET['input']); #string(11) "start_ #_end" </code>
因此,应该是PHP解释器在把 query string 的值写入 $_GET 里时,进行了某些处理
至于为什么进行这样的处理,以及如何解决... 这个超出我的知识范围了...
其实这里只涉及到一个知识点,URIEncode,
URI内的字符在传输时会进行转义,当处理程序收到数据时会进行反转义;%0a
的转义过程大致如下(JS,PHP的过程 @安坚实 已解释了部分):
<code>// encode encodeURIComponent('\n') // %0A encodeURIComponent('\n').toLowerCase() === '%0a' // true // decode decodeURIComponent('%0a').charCodeAt(0) // 10 '\n'.charCodeAt(0) // 10 </code>
关于 JS URI 编码部分可见:
http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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

Loginhandbuch für Coinbase Security: Wie vermeiden Sie Phishing -Websites und Betrug? Phishing und Betrug werden zunehmend verbreitet, und es ist entscheidend, sicher auf das offizielle Anmeldeportal der Coinbase -Anmeldung zuzugreifen. Dieser Artikel bietet praktische Leitfäden, um Benutzern zu helfen, das neueste offizielle Login -Portal von Coinbase sicher zu finden und zu verwenden, um die Sicherheit digitaler Vermögenswerte zu schützen. Wir werden mit der Identifizierung von Phishing-Websites und der sicheren Anmeldung über offizielle Websites, mobile Apps oder vertrauenswürdige Plattformen von Drittanbietern behandeln und Vorschläge zur Verbesserung der Kontosicherheit wie die Verwendung eines starken Kennworts und die Aktivierung der Zwei-Faktor-Überprüfung bereitstellen. Lesen Sie diesen Artikel sorgfältig durch, um Vermögensverluste aufgrund einer falschen Anmeldung zu vermeiden!

Als weltweit führende digitale Asset Trading Platform zieht Ouyi OKX viele Investoren mit ihren reichhaltigen Handelsprodukten, starken Sicherheitsgarantien und bequemen Benutzererfahrungen an. Die Risiken der Netzwerksicherheit werden jedoch immer schwerwiegender, und es ist entscheidend, das offizielle Ouyi OKX -Konto sicher zu registrieren. In diesem Artikel wird das neueste Registrierungsportal für die offizielle Website von Ouyi OKX enthält und die Schritte und Vorsichtsmaßnahmen für eine sichere Registrierung ausführlich erläutert, einschließlich der Identifizierung der offiziellen Website, der festen Überprüfung der Zwei-Faktor usw., damit Sie Ihre digitale Anlageninvestitionsreise sicher und bequem beginnen können. Bitte beachten Sie, dass es Risiken bei der Investition in Digital Asset gibt. Bitte treffen Sie vorsichtige Entscheidungen.

Dieser Artikel enthält einen sicheren und zuverlässigen Binance Exchange App -App -Download -Handbuch, mit dem Benutzer das Problem des Herunterladens von Binance -App im Land lösen können. Aufgrund von Beschränkungen für Haushaltsgeschäfte empfiehlt der Artikel Priorität beim Herunterladen von APK-Installationspaketen von der offiziellen Website von Binance und führt drei Methoden vor: Download der offiziellen Website, Download des Anwendungsgeschäfts von Drittanbietern und die gemeinsame Nutzung von Freunden. Darüber hinaus erinnert der Artikel die Benutzer daran, lokale Gesetze und Vorschriften zu verstehen, die Netzwerksicherheit zu beachten, persönliche Informationen zu schützen, vor Betrug, rationale Investitionen und sicheren Transaktionen zu achten. Am Ende des Artikels betonte der Artikel erneut, dass das Herunterladen und die Verwendung von Binance -App die lokalen Gesetze und Vorschriften einhalten muss und auf eigenes Risiko keine Anlageberatung darstellt.

Dieser Artikel enthält sichere und zuverlässige Anleitungen, mit denen Benutzer auf die neueste offizielle Website von Bitmex Exchange zugreifen und die Transaktionssicherheit verbessern können. Aufgrund von regulatorischen und Cybersicherheitsbedrohungen ist es wichtig, die offizielle Bitmex -Website zu identifizieren und Phishing -Websites zu vermeiden, die Kontoinformationen und -gelder stehlen. Der Artikel führt die Suche nach offiziellen Website-Portalen durch vertrauenswürdige Kryptowährungsplattformen, offizielle soziale Medien, Nachrichtenmedien und Abonnements für offizielle E-Mails. Denken Sie daran, dass der Kryptowährungshandel ein hohes Risiko ist. Investieren Sie bitte mit Vorsicht.

Die Coinbase Exchange -Webversion ist für ihre Bequemlichkeit beliebt, aber sicherer Zugang ist entscheidend. Dieser Artikel soll die Benutzer dazu veranlassen, sich bei der offiziellen Coinbase -Webversion sicher anzumelden und Phishing -Websites und Hacker zu vermeiden. Wir werden ausführlich erklären, wie das offizielle Portal über Suchmaschinen, vertrauenswürdige Plattformen von Drittanbietern und offizielle soziale Medien verifiziert und Sicherheitsmaßnahmen wie die Überprüfung der Adressleistensicherheitssperrung, die Überprüfung von Zwei-Faktoren, die Vermeidung öffentlicher WLAN-Wi-Fi, regelmäßiges Ändern von Passwörtern und Aufmerksamkeit für Phishing-E-Mails hervorgehoben werden, um die Sicherheit Ihres digitalen Vermögens zu gewährleisten. Der korrekte Zugriff auf die offizielle Coinbase -Website ist der erste Schritt zum Schutz Ihrer digitalen Währung.

Als erfahrene Handelsplattform für Kryptowährung Derivate ist die Genauigkeit seines offiziellen Website -Eingangs von entscheidender Bedeutung. Aufgrund von weit verbreiteten Phishing -Websites können Fehlentszene in gefälschte Websites zu einem Diebstahl und dem Verlust von Geldern führen. In diesem Artikel sollen Benutzer sicher auf die offizielle Website von Bitmex zugreifen, verschiedene Methoden wie vertrauenswürdige Kryptowährungsinformationsplattformen (z. B. CoinmarketCap, Coingecko), offizielle soziale Medien, Überprüfung vorhandener Adressen und offizielle Support-Kanäle und betont, die die Verwendung von Sicherheitsmaßnahmen und die Verwendung von Sicherheitsbeteilen und die Nutzung von Sicherheitssoftware, um die Verwendung von Sicherheitsmaßnahmen zu vermeiden, und der Vermittlung von Rückenmessungen und der Sicherheitsvoraussetzung und zur Sicherheitsverifizierung und der Sicherheitsverifizierung betonen.

Ouyi bezieht sich normalerweise auf Ouyi Okx. Die globale Möglichkeit zum Herunterladen von Ouyi OKX -App ist wie folgt: 1. Android -Gerät: Laden Sie die APK -Datei über die offizielle Website herunter und installieren Sie sie. 2. IOS -Gerät: Greifen Sie über den Browser auf die offizielle Website zu und laden Sie die App direkt herunter.

Lösen Sie das Problem der Schnittstelle zwischen Drittanbietern, die 403 in der Node.js-Umgebung zurückgeben. Wenn wir Node.js verwenden, um Schnittstellen von Drittanbietern aufzurufen, begegnen wir manchmal einen Fehler von 403 von der Schnittstelle, die 403 zurückgibt ...
