【问题标题】:Sanitizing mobile device IDs清理移动设备 ID
【发布时间】:2014-07-23 19:30:56
【问题描述】:

在我的数据库中,我存储这些值:
- 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) 之类的解决方案。但是当前的字符集将来会改变吗?我如何对它们进行消毒,以便应对未来的变化?

【问题讨论】:

    标签: php xss sql-injection sanitization


    【解决方案1】:

    PHP 的 mysqli_real_escape_string 是一个选项,但我更喜欢 preg_replace 之类的解决方案

    停在那里。从这个陈述、你的问题和问题标签中可以清楚地看出,你不明白转义是为了什么。与其直接回答你的问题,让我试着解释一下。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多