我一直在使用base64_encode
来保存来自<textarea>
表单的html并将数据存储在数据库中。检索后,使用base64_decode
并将数据放入textarea。不使用mysql_real_escape_string()
吗?
我在检索模板mysql_real_escape_string
的{{1}}参数时使用$_GET
。
id
但是,使用base64保留html还会保留可能在textarea中添加的任何恶意sql代码。到目前为止,我没有遇到任何问题。
使用base64而不是templates.php?id=4
这是不好的做法吗?
“错误的工作工具”?
注意:我将mysql_real_escape_string()
用于xss。
答案 0 :(得分:3)
技术上base64_encode
永远不会输出任何可用于SQL注入的内容。就此而言,这是安全的。
但是,我会习惯总是 SQL转义 任何查询中使用的任何参数,或者总是使用参数化查询开始与(真的,与时俱进!)。它更简单,更直接,当您更改代码时,它不会让您在以后遇到问题。
答案 1 :(得分:2)
是的,base64字符串可以安全地在数据库中使用。但它有一些缺点。
您最好的选择是转移到更新的MySQL驱动程序(例如mysqli
或PDO
),并使用预准备语句。如果由于某种原因无法做到这一点,请坚持使用mysql_real_escape_string
。