1. 程式人生 > >URL傳遞中文字元,特殊危險字元的解決方案(僅供參考)urldecode、base64_encode

URL傳遞中文字元,特殊危險字元的解決方案(僅供參考)urldecode、base64_encode

很多時候,我們需要在url中傳遞中文字元或是其它的html等特殊字元,似乎總會有各種亂,不同的瀏覽器對他們的編碼又不一樣,

對於中文,一般的做法是:

把這些文字字串傳給url之前,先進行urlencode($text)一下;

但是對於一些很“危險”的字元,比如說html字元,甚至是SQL注入相關的字元,如果很明顯的傳給系統,出於安全考慮,系統一般都會把它們過濾掉的。

現在,我們需要這些危險字元,該這麼辦?

我想到的辦法是 先給它們 base64_encode($text) 編碼,到服務端時,又給它們 base64_decode($text) 解碼,

貌似很完美,但是在使用的過程中又遇到一個問題,base64_encode

 編碼後的字串中含有 "/", "+", "=" 等字元,

這些字元在url編碼中又是特殊字元,比如 "+" ,它就表示 “空格”,但是不同的瀏覽器對“空格”的編碼又不一樣,有的是用“+”表示,有的是用“20%”表示,也就是說,讓這些base64_encode編碼後的字串在url中傳遞,用不同的瀏覽器去瀏覽時,服務端得到值不一樣。

於是乎,想到了一個折中辦法,先將這些base64編碼後的特殊字元替換掉,到服務端後,又替換回來:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function base_encode($str) {
$src  array("/","+","="); $dist array("_a","_b","_c"); $old  base64_encode($str); $new  str_replace($src,$dist,$old); return $new; } function base_decode($str) { $src array("_a","_b","_c"); $dist  array("/","+","="); $old  str_replace($src,$dist,$str); $new base64_decode(
$old); return $new; }

下面是在瀏覽器中得到的效果

xOO6w6Osuf65_aiy_atL_b00Ke5_b8jnus6ho6GjoaM_c

呵呵,看看效果如何。。。

相關推薦

URL傳遞中文字元特殊危險字元解決方案參考urldecodebase64_encode

很多時候,我們需要在url中傳遞中文字元或是其它的html等特殊字元,似乎總會有各種亂,不同的瀏覽器對他們的編碼又不一樣, 對於中文,一般的做法是: 把這些文字字串傳給url之前,先進行urlencode($text)一下; 但是對於一些很“危險”的字元,比如說ht

Junit4 三角形測試例子初學者借鑑參考

本人在初步學到Junit4 時,用簡單的三角形作為demo,以下是詳細程式碼: Triangle.java 檔案 程式碼 /** * 三角形問題實現 * 給定三條邊,判斷三角形的形狀 * @author zhouxin * */ public class Tri

Http的Get/Post請求帶有特殊字元400 Bad Request解決方案

今天做專案的時候,需要向伺服器介面 傳遞 json引數,使用 apache 的 httpclient,當時沒有對引數做特殊處理直接提交了,結果執行時報錯了,如下: HTTP 400 Bad Request 後來在網上查資料找到原因了:HttpGet或 HttpPost都不能

JS通過Url傳遞中文引數c#獲取引數

最近遇到一個JS通過Url傳遞中文引數,c#獲取中文引數亂碼的問題。解決方法如下: 正確的方法是: JS var reqUrl = document.location + "?key=" + encodeURI(keyword); C# string keyword =

Java中文亂碼&特殊字符解決方案

tco 其它 exce 相同 blog 選擇 misc black 是什麽 Java中文亂碼&特殊字符解決方案 相信很多朋友遇到過Java的亂碼問題,最近我也在解決一個“使用文本生成圖片過程中中文以及特殊字符亂碼”的問題;花了我大量時間,Debug了sun.font

MyEclipse字元編碼設定+亂碼問題解決方案待續

問題:這10種設定字元編碼的區別與作用域(作用域:所有空間、當前工作空間、當前工程、當前檔案) 1、Window->Preferences->General->Content Types->比如選中右邊的JSP,視窗下面則出現Default enc

Python2.x編譯器列印中文出現亂碼的三種解決方案本人以VS2017與VS Code為例使用其他整合開發工具的也可參考

本文主要介紹了三種解決方案: 解決方案一:在需要列印的中文字元前加個u,用於標識所要列印的是一個Unicode字串。(我感覺著一種方法是最簡單和省事的,並且使用其他整合開發工具的若遇到類似的問題,也應該可以使用這種方法解決,具體大家可以在下方評論)(測試此方法不適合在Vis

IE7IE8下使用escapeencodeURI傳遞中文引數亂碼的問題及解決方案

js跳轉到指定頁面,一旦escape()中文資料,瀏覽器就會終止和沒有反應。上網搜了半天始終不得解。一種說法是,escape中文之後,url中出現了%u,IE7和IE8拒絕執行。目前看來差不多是這樣的。不得已,只好使用encodeURI(),但是asp並不能接受encodeURI的中文,而是解析成亂碼。於是又

leetcode35題:搜索插入位置不是最優解法參考

重復 mce 僅供參考 sea elf () 參考 lis 位置 給定一個排序數組和一個目標值,在數組中找到目標值,並返回其索引。如果目標值不存在於數組中,返回它將會被按順序插入的位置。你可以假設數組中無重復元素。 示例 1:輸入: [1,3,5,6], 5輸出: 2示例

Android 圖片資原始檔命名規範非官方參考

  對於Android的資原始檔的命名,Google官方並沒有提供統一的規範,民間的命名方式可謂是百花齊放、相容幷包,比較知名的有阿里巴巴開發規範,以及Blankj的AndroidStandardDevelop,以下內容是筆者參考了其他的一些命名規範,加上自己總結的一些命名方式所得。由於專

哨兵2資料‘檔名’詳解吐血整體參考

哨兵2資料檔名詳解 Sentinel-2 Level-1C products: (2016年12月6日之後生成的Sentinel-2 Level-1C產品的新格式命名約定) .zip解壓後為.SAFE檔案 S2A_MSIL1C_20170105T013442_

ab壓測引數化可以同時執行多條,指令碼參考

#!/bin/bash echo '*==========================================================*' echo '|  本指令碼工具基於ab(Apache benchmark),請先安裝好ab, awk   |' e

傳輸中文的亂碼的原因及解決方式兩次encodeURI()轉碼;

.encodeURL函式主要是來對URI來做轉碼,它預設是採用的UTF-8的編碼. . UTF-8編碼的格式:一個漢字來三個位元組構成,每一個位元組會轉換成16進位制的編碼,同時新增上%號. 假設頁面端輸入的中文是一個 “中”,按照下面步驟進行解碼 1.第

幾種開源SIP協議棧對比文章很早了參考

幾種開源SIP協議棧對比 2006-12-05 15:49   基於SIP的開發的話,基本還是使用開源的協議棧的,當然也有牛的公司和單位是自己開發協議棧的,不過並不一定比開源的好用,不過可能使用在特定場合時,會有一定優勢吧。   在以前開發UA時,我用的

IDEA 無法找到jdk只能找到jre解決方式親測有效

                         在第一次使用I

Ambari叢集移動現有複製到另外地方或更改ip地址導致各項服務元件上為黃色問號代表心跳丟失的解決方案圖文詳解博主推薦

前言          最近,是在做叢集搬移工作,大家肯定會遇到如下的場景。          (1) 比如,你新購買的電腦,初步者學習使用Ambari叢集。從舊電腦複製到新電腦這邊來。          (2) 比如,你公司Ambari叢集的ip,因業務或其他情況需要,暫時需要更改ip。  

Java中URL傳遞中文字元成亂碼及引數轉義符轉換

頁面使用此函式function URLencode(sStr) { return escape(sStr). replace(/\+/g, '%2B'). replace(/\"/g,'

http url轉義字元特殊字元

空格 - %20 " - %22 # - %23 % - %25 & - %26 ( - %28 ) - %29 + - %2B , - %2C / - %2F : - %3A ; - %3B < - %3C = - %3D > - %3E ? - %3

android檔案下載下載連結中包含特殊字元--空格中文導致無法識別處理方案

今天在app測試時出現標題所示錯誤,導致無法正常重server端下載檔案; 通過檢視日誌,瞭解到是由於下載連結中出現空格、中文等特殊字元,導致連線地址不合法; 在網上也查看了很多描述相關問題解決方案的帖子,很有啟發-- 但是考慮到方便自己和大家,還是把問題和解決方案貼出來

Web專案中前端頁面通過URL中文或 # 特殊字元到後臺出現亂碼解決方案

      對於剛入行新手來說碰到URL傳遞中文資料到後臺出現亂碼或是傳遞包含特使符號‘#’後端獲取不到的情況是比較頭疼的事,這裡我就告訴你這兩個的解決的方式;        1.URL傳遞中文     前端頁面:中文字串用 encodeURI(encodeURI(