Jadual Kandungan
谁能帮忙详细讲解下其中的原理吗?
回复内容:
Rumah pembangunan bahagian belakang tutorial php javascript - %0a(换行符)的执行解析过程

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

Jun 06, 2016 pm 08:40 PM
javascript php pengekodan aksara pelayar

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>
Salin selepas log masuk
Salin selepas log masuk

情况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>
Salin selepas log masuk
Salin selepas log masuk

我们可以发现,情况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>
Salin selepas log masuk
Salin selepas log masuk

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

回复内容:

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>
Salin selepas log masuk
Salin selepas log masuk

情况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>
Salin selepas log masuk
Salin selepas log masuk

我们可以发现,情况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>
Salin selepas log masuk
Salin selepas log masuk

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

@安坚实 的答案,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>
Salin selepas log masuk

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

<code>var_dump($_GET['input']); 
#string(11) "start_
#_end"
</code>
Salin selepas log masuk

因此,应该是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>
Salin selepas log masuk

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Port Login Exchange Coinbase 2025 Port Login Exchange Coinbase 2025 Mar 21, 2025 pm 05:51 PM

Panduan Masuk Keselamatan Coinbase: Bagaimana untuk mengelakkan tapak pancingan data dan penipuan? Phishing dan penipuan menjadi semakin berleluasa, dan sangat penting untuk mengakses portal log masuk rasmi Coinbase. Artikel ini menyediakan panduan praktikal untuk membantu pengguna mencari dan menggunakan portal log masuk rasmi terkini Coinbase untuk melindungi keselamatan aset digital. Kami akan meliputi cara mengenal pasti tapak pancingan data, dan bagaimana untuk log masuk dengan selamat melalui laman web rasmi, aplikasi mudah alih atau platform pihak ketiga yang dipercayai, dan memberikan cadangan untuk meningkatkan keselamatan akaun, seperti menggunakan kata laluan yang kuat dan membolehkan pengesahan dua faktor. Untuk mengelakkan kerugian aset kerana log masuk yang salah, pastikan anda membaca artikel ini dengan teliti!

Portal pendaftaran terkini untuk laman web rasmi OUYI Portal pendaftaran terkini untuk laman web rasmi OUYI Mar 21, 2025 pm 05:54 PM

Sebagai platform perdagangan aset digital terkemuka di dunia, Ouyi Okx menarik banyak pelabur dengan produk dagangannya yang kaya, jaminan keselamatan yang kuat dan pengalaman pengguna yang mudah. Walau bagaimanapun, risiko keselamatan rangkaian menjadi semakin teruk, dan bagaimana untuk mendaftarkan akaun OUYI OKX rasmi adalah penting. Artikel ini akan menyediakan portal pendaftaran terkini untuk laman web rasmi OUYI OKX, dan menerangkan secara terperinci langkah-langkah dan langkah berjaga-jaga untuk pendaftaran yang selamat, termasuk cara mengenal pasti laman web rasmi, menetapkan kata laluan yang kuat, membolehkan pengesahan dua faktor, dan lain-lain, untuk membantu anda memulakan perjalanan pelaburan aset digital anda dengan selamat dan mudah. Sila ambil perhatian bahawa terdapat risiko dalam pelaburan aset digital, sila buat keputusan berhati -hati.

Tutorial muat turun domestik Tutorial muat turun domestik Mar 21, 2025 pm 05:42 PM

Artikel ini menyediakan panduan terperinci untuk muat turun selamat aplikasi OUYI OKX di China. Oleh kerana sekatan ke kedai aplikasi domestik, pengguna dinasihatkan untuk memuat turun aplikasi melalui laman web rasmi OUYI OKX, atau menggunakan kod QR yang disediakan oleh laman web rasmi untuk mengimbas dan memuat turun. Semasa proses muat turun, pastikan anda mengesahkan alamat laman web rasmi, periksa kebenaran aplikasi, lakukan imbasan keselamatan selepas pemasangan, dan membolehkan pengesahan dua faktor. Semasa penggunaan, sila mematuhi undang -undang dan peraturan tempatan, gunakan persekitaran rangkaian yang selamat, melindungi keselamatan akaun, berhati -hati terhadap penipuan, dan melabur secara rasional. Artikel ini hanya untuk rujukan dan tidak menjadi nasihat pelaburan.

Log masuk ke laman web rasmi terbaru Bitmex Exchange Log masuk ke laman web rasmi terbaru Bitmex Exchange Mar 21, 2025 pm 06:06 PM

Artikel ini menyediakan panduan yang selamat dan boleh dipercayai untuk membantu pengguna mengakses laman web rasmi terbaru Bitmex Exchange dan meningkatkan keselamatan transaksi. Oleh kerana ancaman pengawalseliaan dan siber, adalah penting untuk mengenal pasti laman web Bitmex rasmi dan mengelakkan laman web pancingan data mencuri maklumat dan dana akaun. Artikel ini memperkenalkan pencarian portal laman web rasmi melalui platform cryptocurrency yang dipercayai, media sosial rasmi, media berita, dan melanggan e-mel rasmi. Ingat, perdagangan cryptocurrency berisiko tinggi, sila melabur dengan berhati -hati.

Penjelasan terperinci mengenai harga terbitan dan masa terbitan duit syiling tenun Penjelasan terperinci mengenai harga terbitan dan masa terbitan duit syiling tenun Mar 20, 2025 pm 06:21 PM

Loom Coin, permainan blockchain yang pernah terkenal dan platform pembangunan aplikasi sosial Token, ICOnya diadakan pada 25 April 2018, dengan harga isu kira-kira AS $ 0.076 per syiling. Artikel ini akan mengadakan perbincangan mendalam mengenai masa terbitan, harga dan langkah berjaga-jaga penting duit syiling, termasuk risiko volatiliti pasaran dan prospek pembangunan projek. Pelabur harus berhati -hati dan tidak mengikuti trend secara membabi buta. Ketahui tentang duit syiling, mulakan di sini!

Tutorial Muat turun Muat turun Domestik Binance Exchange App Tutorial Muat turun Muat turun Domestik Binance Exchange App Mar 21, 2025 pm 05:45 PM

Artikel ini menyediakan panduan muat turun aplikasi Binance Exchange yang selamat dan boleh dipercayai untuk membantu pengguna menyelesaikan masalah memuat turun aplikasi Binance di negara ini. Oleh kerana sekatan ke atas kedai-kedai aplikasi domestik, artikel itu mengesyorkan keutamaan untuk memuat turun pakej pemasangan APK dari laman web rasmi Binance, dan memperkenalkan tiga kaedah: muat turun laman web rasmi, muat turun kedai pihak ketiga, dan perkongsian rakan-rakan. Di samping itu, artikel itu juga mengingatkan pengguna untuk memahami undang -undang dan peraturan tempatan, memberi perhatian kepada keselamatan rangkaian, melindungi maklumat peribadi, berhati -hati dengan penipuan, pelaburan rasional, dan urus niaga yang selamat. Pada akhir artikel, artikel itu sekali lagi menekankan bahawa memuat turun dan menggunakan aplikasi Binance mesti mematuhi undang -undang dan peraturan tempatan, dan dengan risiko anda sendiri, dan tidak menjadi nasihat pelaburan.

Portal log masuk versi web Coinbase Exchange Portal log masuk versi web Coinbase Exchange Mar 21, 2025 pm 05:48 PM

Versi Web Exchange Coinbase adalah popular untuk kemudahannya, tetapi akses yang selamat adalah penting. Artikel ini bertujuan untuk membimbing pengguna untuk log masuk ke versi Web Coinbase rasmi dengan selamat dan mengelakkan laman web dan penggodam phishing. Kami akan menerangkan secara terperinci bagaimana untuk mengesahkan portal rasmi melalui enjin carian, platform pihak ketiga yang dipercayai dan media sosial rasmi, dan menekankan langkah-langkah keselamatan seperti memeriksa kunci keselamatan bar alamat, membolehkan pengesahan dua faktor, mengelakkan Wi-Fi awam, mengubah kata laluan secara berkala, dan berjaga-jaga dengan e-mel untuk memastikan keselamatan aset digital anda. Akses yang betul ke laman web Coinbase rasmi adalah langkah pertama untuk melindungi mata wang digital anda.

Pintu masuk laman web rasmi Bitmex Exchange Pintu masuk laman web rasmi Bitmex Exchange Mar 21, 2025 pm 06:03 PM

Sebagai platform perdagangan derivatif cryptocurrency veteran, ketepatan pintu masuk laman web rasminya adalah penting. Oleh kerana laman web phishing yang berleluasa, kemasukan yang salah ke laman web palsu boleh menyebabkan kecurian akaun dan kehilangan dana. Artikel ini bertujuan untuk membimbing pengguna untuk mengakses laman web rasmi Bitmex dengan selamat, menyediakan pelbagai kaedah seperti platform maklumat cryptocurrency yang dipercayai (seperti coinmarketcap, coingecko), media sosial rasmi, pengesahan alamat yang sedia ada dan saluran sokongan rasmi, dan menekankan penggunaan langkah-langkah keselamatan seperti pengesahan

See all articles