清理移动设备ID

时间:2014-07-23 19:30:57

标签: php xss sql-injection sanitization

在我的数据库中,我存储了这些值:
- 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)这样的解决方案。但是,将来当前的角色集可以改变吗?我如何消毒它们以便我可以涵盖未来的变化?

1 个答案:

答案 0 :(得分:1)

  

PHP的mysqli_real_escape_string是一个选项,但我更喜欢像preg_replace这样的解决方案

停在那里。通过此声明,您的问题以及您不了解逃避的问题标签,这一点很清楚。我不是直接回答你的问题,而是试着解释一下。

mysqli_real_escape_string()转义SQL的字符串。所有这些意味着您可以在SQL语句中透明地使用字符串。也就是说,数据不会与命令混淆。当数据包含使数据和命令之间的分隔符不明确的字符时,就会发生SQL注入。为避免SQL注入,必须将数据与命令分开。一种方法是逃避它。

更好的方法是使用准备好的查询。这将所有数据与命令分开,这意味着数据可以是您想要的任何数据,并且不需要转义。

另请参阅:https://stackoverflow.com/a/7810880/362536