在我的数据库中,我存储了这些值:
- Android GCM注册ID
- IOS identifier for vendor
- 设备IMEI
- PHP uniqid
看起来他们有这些字符集:
GCM ID:AZaz09-_
供应商的标识符:AZ09-
IMEI:09
PHP uniqid:az09
我需要在保存到数据库之前清理这些ID
所以我不确定如何消毒它们
PHP的mysqli_real_escape_string
是一个选项,但我更喜欢像preg_replace('/[^A-Za-z0-9\_]/', '', $deviceid)
这样的解决方案。但是,将来当前的角色集可以改变吗?我如何消毒它们以便我可以涵盖未来的变化?
答案 0 :(得分:1)
PHP的mysqli_real_escape_string是一个选项,但我更喜欢像preg_replace这样的解决方案
停在那里。通过此声明,您的问题以及您不了解逃避的问题标签,这一点很清楚。我不是直接回答你的问题,而是试着解释一下。
mysqli_real_escape_string()
转义SQL的字符串。所有这些意味着您可以在SQL语句中透明地使用字符串。也就是说,数据不会与命令混淆。当数据包含使数据和命令之间的分隔符不明确的字符时,就会发生SQL注入。为避免SQL注入,必须将数据与命令分开。一种方法是逃避它。
更好的方法是使用准备好的查询。这将所有数据与命令分开,这意味着数据可以是您想要的任何数据,并且不需要转义。