将变量转换为字符串

时间:2014-11-27 03:13:16

标签: php mysql

我正在登录,并将使用此进行注册,并允许电子邮件和密码中的符号和特殊字符。我知道这对黑客注射是一个严重的威胁。我的问题是:如何将字段(例如'email','password')的输入转换为字符串,不允许服务器将它们作为代码和命令处理。

我真的很少知道从哪里开始,但已经尝试mysqli_escape_string;但是,正如您最有可能知道的那样,它非常薄并且已被弃用。我不介意研究一下,我会非常感谢一些开始的信息!

2 个答案:

答案 0 :(得分:2)

如果你真的不知道从哪里开始,这不是一件坏事!但是,我建议不要尝试创建自己的登录/注册系统,除非你知道该怎么做。特别是如果你关心安全。即使对于经验丰富的程序员来说,这也是一件非常容易搞砸的事情。我将是第一个承认,我花了很多时间在PHP中编写我自己的登录/ auth模块,并花了很多时间继承代码,其他人实现自己的方法,大多数时候,不正确。

我建议您学习网络框架。我最喜欢的PHP Web框架是LaravelCode Igniter,Laravel是我最喜欢的。你会发现这里也有一个学习曲线,但你会发现更多支持正确和安全地实现用户身份验证。例如:http://laravel.com/docs/4.2/security

使用框架,您还可以获得许多帮助方法,使数据库访问变得有趣,简单和安全。看看examples here!你可以随时使用原始的sql!但是对于你的日常CRUD应用程序,没有必要!

如果你仍然绝对坚持自己这样做,尽管我会在最后一次警告你。我建议使用PDOMySQLi预备语句(我更喜欢PDO)。

我的猜测是该应用程序并不太远,因为您仍在考虑如何构建登录/注册,因此您可能不会“陷入”使用原始PHP并自己完成所有操作。 :)

答案 1 :(得分:1)

  1. 执行mysql查询时使用预准备语句。 (更多详情here
  2. 尽可能限制输入字段长度(通常mysql注入查询很长。这可以防止执行更改的更长查询,即使有错误导致漏洞)
  3. 仅授予mysql用户所需的权限。只要您只需要用户阅读,只提供读取权限。
  4. 加密密码等敏感数据。使用salted密码哈希。