防止SQL注入 - PDO,mysqli

Dar*_*den 2 php mysql sql pdo sql-injection

可能重复:
在PHP中阻止SQL注入的最佳方法

我刚发现我的网站很有价值.

由于它连接到数据库并具有以下功能:注册,更改密码,通知等......并且使其完全易受攻击.

为了开始安全起见,我应该在代码中寻找什么?

我的意思是,我做了一些研究,无处不在,每个人都说不同的安全问题.

"使用PDO."

"使用mysql_real_escape_string."

"使用addslashes."

究竟应该找什么?

"$_POST" and "$_GET" variables??
"$_SESSION" variables?
Run Code Online (Sandbox Code Playgroud)

SQL查询?

$sql = "select * from user";
$sql = "update user set user="new_user_name";
$sql = "insert into user (user) values ('userid')";
Run Code Online (Sandbox Code Playgroud)

在每种情况下我该怎么办?请帮助我知道我必须去哪里和哪里.

谢谢.

Wat*_*ame 5

以下是制作安全php应用程序时要考虑的要点.

  1. 使用PDO或mysqli
  2. 绝不相信任何投入.考虑每个变量,即$ _POST,$ _GET,$ _COOKIE,$ _SESSION,$ _SERVER,就像它们被污染一样.对这些变量使用适当的过滤措施.
  3. 为了避免XSS攻击,在将用户输入数据插入数据库时​​,使用php的内置函数htmlentities,strip_tags等.
  4. 在PHP.INI中禁用Register Globals
  5. 在PHP.INI中禁用"allow_url_fopen"
  6. 不允许用户输入超出要求的数据.验证输入以允许最大字符数.还要验证每个字段的相关数据类型.
  7. 在开发期后禁用错误报告.它可能会提供有关数据库的信息,这些信息对黑客有用.
  8. 发布表单时使用一次性令牌.如果令牌存在且匹配表单帖子有效,否则无效.
  9. 使用参数化数据库查询
  10. 使用存储过程

您可以谷歌搜索每个点以获取更多详细信息.希望这可以帮助

  • #2永远不要相信任何输入,期间.完全有可能注入自己,没有任何"用户"数据进入图片. (3认同)