PHP base64编码发布请求

时间:2019-01-25 11:43:42

标签: php html base64 encode

简而言之:

DAO

我想将<form method="post" action=""> <textarea name="foo">bar</textarea> </form> 的值发布为base64编码(不使用ajax来节省时间)。

详细信息:

  • 我有一个界面,人们可以在其中触发SQL SELECT查询以获取简单的报告。
  • Network(公司防火墙)将POST请求视为SQL注入对其进行过滤。
  • 我可以想到的一种解决方案是对数据进行编码,然后发出POST请求。然后在服务器端解码。
  • 有什么不使用ajax solution的方法吗?这将帮助我避免代码的重构。

2 个答案:

答案 0 :(得分:3)

您可以在提交表单之前将文本值转换为Base64字符串,而无需使用window.btoa

使用Ajax
var str = document.getElementById("foo").value;
var enc = window.btoa(str);
  

btoa()方法使用base-64编码字符串。
  此方法使用“ A-Z”,“ a-z”,“ 0-9”,“ +”,“ /”和“ =”字符对字符串进行编码。

有关btoahttps://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/btoa

的更多信息

答案 1 :(得分:1)

您不需要使用Ajax,可以使用表单的onsubmit事件编写一个javascript处理程序,该处理程序将数据编码为隐藏的输入,并与表单一起发送(请注意,原始textarea具有否name,因此不会在POST中发送。

function encodeSql() {

    var e = document.getElementById('sql');
    var t = document.getElementById('sql_base64');
    t.value = encodeToBase64Somehow(e.value);
    return true;
}

<form ... onsubmit="return encodeSql()">
    <textarea id="sql">...</textarea>
    <input type="hidden" name="sql_base64" id="sql_base64" />
</form>