开发者

inserting/reading Base64 strings with SQLite

I tried to insert a base64 encoded string into my SQLite database, but when I read back the value, I get a different result than what I saved. More specifically, every time my string contains a "+" character, it gets stored as '?' in my db.

I thought maybe the two non-alpha-numeric characters in base64-- namely, '+' and '/' are sensitive characters in SQLite, so I did some research and saw this page: http://www.sqlite.org/lang_expr.html

I see that + is a unary operator, and / is a binary operator... but still, if I insert the string containing these characters into my table, it shouldn't cause any problems right?

开发者_运维问答

Also, this may be unrelated to the problem but I am coding with Javascript, the SQLite I'm using is a client side database for Firefox.

As for the code, I'm storing with this API provided by Firefox:

db.record({COLNAME:MY_BASE64_STRING})

and I'm reading with this:

let db_query = "SELECT * FROM " + dbstore._tableName + " WHERE col_1 = :row_id";
let statement = dbstore._createStatement(db_query);
statement.params.row_id=base64_string;


It seems that they are doing some input sanitization for XSS defense. That's why the b64 encoded strings are not stroring properly.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜