這篇文章主要介紹了javascript實(shí)現(xiàn)的字符串與十六進(jìn)制表示字符串相互轉(zhuǎn)換方法,涉及javascript字符串轉(zhuǎn)換的相關(guān)技巧,在防止SQL注入和XSS中具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了javascript實(shí)現(xiàn)的字符串與十六進(jìn)制表示字符串相互轉(zhuǎn)換方法。分享給大家供大家參考。具體如下:
之所以寫(xiě)這個(gè),是因?yàn)榘l(fā)現(xiàn)SQL注入和XSS中經(jīng)常利用十六進(jìn)制表示的字符串,比如
SELECT CONCAT(0x68656c6c6f);
得到的是hello
- <!DOCTYPE html>
- <html>
- <head>
- <title>Hex-Char Bi-Converter</title>
- </head>
- <body>
- <div class="mainContainer">
- <label for="from" id="fromLabel">String</label>
- <input type="text" name="from" id="from" />
- <input type="button" name="exchange" id="exchange" value="<=>" />
- <label for="to" id="toLabel">Hex</label>
- <input type="text" name="to" id="to" />
- <input type="button" name="convert" id="convert" value="Convert" />
- </div>
- <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
- <script type="text/javascript">
- var curMode = 0; // curMode: 0 represents String to Hex, 1 from Hex to String
- var fromToLabelArray = ["Hex", "String"];
- $(function() {
- $("#convert").click(function() {
- var fromVal = $("#from").val();
- var toVal =
- curMode === 0
- ?
- strToHexCharCode(fromVal)
- :
- hexCharCodeToStr(fromVal);
- $("#to").val(toVal);
- });
- $("#exchange").click(function() {
- $("#fromLabel").text(fromToLabelArray[curMode]);
- $("#toLabel").text(fromToLabelArray[1-curMode]);
- curMode = 1 - curMode;
- });
- });
- function strToHexCharCode(str) {
- if(str === "")
- return "";
- var hexCharCode = [];
- hexCharCode.push("0x");
- for(var i = 0; i < str.length; i++) {
- hexCharCode.push((str.charCodeAt(i)).toString(16));
- }
- return hexCharCode.join("");
- }
- function hexCharCodeToStr(hexCharCodeStr) {
- var trimedStr = hexCharCodeStr.trim();
- var rawStr =
- trimedStr.substr(0,2).toLowerCase() === "0x"
- ?
- trimedStr.substr(2)
- :
- trimedStr;
- var len = rawStr.length;
- if(len % 2 !== 0) {
- alert("Illegal Format ASCII Code!");
- return "";
- }
- var curCharCode;
- var resultStr = [];
- for(var i = 0; i < len;i = i + 2) {
- curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
- resultStr.push(String.fromCharCode(curCharCode));
- }
- return resultStr.join("");
- }
- </script>
- </body>
- </html>
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選