php - 如何避免 "PHP injection"

标签 php security

我有这个脚本

<?php $number = %value%; ?>

%value% 标记将替换为用户在数据库中输入的值。

我担心的是有人输入了如下内容:

1; echo phpinfo()

替换的结果将是:

<?php $number = 1; echo phpinfo(); ?>

这显然是一个安全风险。

是否有转义 php 脚本字符的功能或我可以使用的功能?

提前致谢。

上下文

这是我正在使用的 CMS 上的一个工具,通常工具会生成添加到某些 PHP 文件的 HTML 代码。

在这种情况下,此工具会从 RSS channel 生成 HTML 结构。我们要求用户输入 RSS URL 和要显示的提要数量,我们将这些值替换到 PHP 脚本中并使用它们来获取提要并以 HTML 结构显示它们。

像这样:

<?php
  $url = "URL"; //comes from DB
  $number = N; //comes from DB
  $feeds = getFeeds($url, $number);
  ...
?>

最佳答案

您上面描述的机制存在缺陷。 PHP 不能那样工作。除非:

  • 您通过 eval() 调用运行它
  • 将代码和用户输入的组合保存为 PHP 文件,稍后执行

您应该担心的是 SQL 注入(inject),这是完全不同的事情。

如果您指的是与项目符号 #2 类似的场景,那么从设计角度来看,您很有可能做错了一些事情,您应该重新考虑您的方法。

关于php - 如何避免 "PHP injection",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4401311/

相关文章:

php - 自动完成不适用于动态创建的行

php - 如何在 php 中对表数据值求和

https - 重播针对HTTPS请求的攻击

java - spring boot oauth2管理httpbasic认证

php - 如何优雅地禁用 PHP 日志记录类

PHP imagecreatefromgif() 不适用于动画 gif

php - Zend Framework - 日期问题

http - 是否使用 https 执行登录,但随后 http 中的所有内容都毫无意义?

javascript - 防止站点范围内的 XSS 攻击

android - 保护应用程序数据