我的 Base64 解码有问题
例如,我有这样的代码:
else if($_POST['submit']==2){
$send = base64_encode($text_success);
wp_redirect( home_url('/sales-funnel/add-product?msg='.$send) ); exit;
}
我将编码的字符串发送到页面,以便用户不能简单地从 url 读取它。
$text_success 包含 html 代码,如果$wpdb->query
不包含错误:
`Darījums veiksmīgi pievienots!</br>Komentārs veiksmīgi pievienots!</br>Klients veiksmīgi pievienots!</br>Fāze ir pievienota! </br>`
在所有在线 base64_decode 中,它的效果都很好,但是当我尝试执行以下操作时,我的 WordPress 网站返回空字符串:
if (isset($_GET['msg']) && !empty($_GET['msg'])){
$text = base64_decode($_GET['msg']);
echo $text;
}
But, $_GET['msg'] = RGFyxKtqdW1zIHZlaWtzbcSrZ2kgcGlldmllbm90cyE8L2JyPktvbWVudMSBcnMgdmVpa3NtxKtnaSBwaWV2aWVub3RzITwvYnI+S2xpZW50cyB2ZWlrc23Eq2dpIHBpZXZpZW5vdHMhPC9icj5GxIF6ZSBpciBwaWV2aWVub3RhISA8L2JyPg==
附:我尝试在没有 html 标签的情况下使用它,一切都很好。
该问题与 Base64 字母表不安全的事实有关。在这种特殊情况下,您的 base64 编码字符串包含一个+
,它被解释为一个空格。
要解决此问题,您可以:
- 使用 Base64 字母表的 URL 安全版本,即替换
+
with -
, /
with _
,并修剪尾随=
填充,如中所述RFC4648 https://www.rfc-editor.org/rfc/rfc4648#section-5. 这个答案 https://stackoverflow.com/a/5835352/3558960包括此方法的代码示例。
- Base64 编码后对您的内容进行 URL 编码,转
+
into %2B
, /
into %2F
, and =
into %3D
.
这应该可以解决您的问题,但不用说,在不受信任的环境中,让用户能够将原始 HTML 注入您的网站会构成严重的安全风险。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)