Inhaltsverzeichnis
谁能帮忙详细讲解下其中的原理吗?
回复内容:
Heim Backend-Entwicklung PHP-Tutorial javascript - %0a(换行符)的执行解析过程

javascript - %0a(换行符)的执行解析过程

Jun 06, 2016 pm 08:40 PM
javascript php 字符编码 浏览器

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>
Nach dem Login kopieren
Nach dem Login kopieren

情况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>
Nach dem Login kopieren
Nach dem Login kopieren

我们可以发现,情况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>
Nach dem Login kopieren
Nach dem Login kopieren

应该也会出现换行才是,但实际上也没有

回复内容:

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>
Nach dem Login kopieren
Nach dem Login kopieren

情况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>
Nach dem Login kopieren
Nach dem Login kopieren

我们可以发现,情况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>
Nach dem Login kopieren
Nach dem Login kopieren

应该也会出现换行才是,但实际上也没有

@安坚实 的答案,query string由于地址栏显示、日志记录、或者转义等各方面的需要,必须将部分字符进行翻译(比如无法显示的字符、有特殊含义的控制字符等)

所以你在百度搜索一个&符号的时候 访问到的链接 实际是 http://www.baidu.com/s?wd=%26
因为这个字符与query string中的参数连接符冲突了,需要进行转义

这个过程就是一个编码的过程,这样的编码算法最常见的就是 URLEncodeBase64Encode
而此处使用的是 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>
Nach dem Login kopieren

但是,当它被写入到 $_GET 全局数组里时,就变成换行了

<code>var_dump($_GET['input']); 
#string(11) "start_
#_end"
</code>
Nach dem Login kopieren

因此,应该是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>
Nach dem Login kopieren

关于 JS URI 编码部分可见:
http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Coinbase Exchange -Anmeldeport 2025 Coinbase Exchange -Anmeldeport 2025 Mar 21, 2025 pm 05:51 PM

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!

Das neueste Registrierungsportal für die offizielle Website von Ouyi Das neueste Registrierungsportal für die offizielle Website von Ouyi Mar 21, 2025 pm 05:54 PM

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.

Binance Exchange App Inländische Download -Tutorial Binance Exchange App Inländische Download -Tutorial Mar 21, 2025 pm 05:45 PM

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.

Melden Sie sich auf der neuesten offiziellen Website von Bitmex Exchange an Melden Sie sich auf der neuesten offiziellen Website von Bitmex Exchange an Mar 21, 2025 pm 06:06 PM

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.

Coinbase Exchange -Webversion -Anmeldeportal Coinbase Exchange -Webversion -Anmeldeportal Mar 21, 2025 pm 05:48 PM

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.

Die neueste offizielle Website von Bitmex Exchange Die neueste offizielle Website von Bitmex Exchange Mar 21, 2025 pm 06:03 PM

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.

Wo kann man die echte Ouyi herunterladen? Offizielle Website herunterladen. Global Wo kann man die echte Ouyi herunterladen? Offizielle Website herunterladen. Global Mar 31, 2025 pm 02:09 PM

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.

Wie löste ich das Problem der Schnittstelle zwischen Drittanbietern in der Node.js-Umgebung 403? Wie löste ich das Problem der Schnittstelle zwischen Drittanbietern in der Node.js-Umgebung 403? Mar 31, 2025 pm 11:27 PM

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 ...

See all articles