php 过滤用户输入

发布于 2024-08-13 18:30:39 字数 70 浏览 5 评论 0原文

我想知道trim()、strip_tags()和addslashes()的组合是否足以过滤来自$_GET和$_POST的变量值

Am wondering if the combination of trim(), strip_tags() and addslashes() is enough to filter values of variables from $_GET and $_POST

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

千寻… 2024-08-20 18:30:39

这取决于您想要执行哪种验证。

以下是一些基本示例:

  • 如果要在 MySQL 查询中使用数据,请确保对数据使用 mysql_real_escape_query() 而不是 addslashes()。
  • 如果它包含文件路径,请务必删除“../”部分并阻止对敏感文件名的访问。
  • 如果要在网页上显示数据,请确保在其上使用 htmlspecialchars()。

但最重要的验证是仅接受您期望的值,换句话说:仅在您期望数字时才允许数字值,等等。

That depends what kind of validation you are wanting to perform.

Here are some basic examples:

  • If the data is going to be used in MySQL queries make sure to use mysql_real_escape_query() on the data instead of addslashes().
  • If it contains file paths be sure to remove the "../" parts and block access to sensitive filename.
  • If you are going to display the data on a web page, make sure to use htmlspecialchars() on it.

But the most important validation is only accepting the values you are expecting, in other words: only allow numeric values when you are expecting numbers, etc.

温柔少女心 2024-08-20 18:30:39

简短的回答:不。

长答案:这取决于。

基本上,如果不考虑您想用它做什么,您就不能说一定量的过滤是足够的或不够的。例如,上面的代码将允许通过“javascript:dostuff();”,如果您碰巧在链接的 href 属性中使用了这些 GET 或 POST 值之一,则这可能没问题,也可能不行。

同样,您可能有一个富文本区域,用户可以在其中进行编辑,因此从中剥离标签并不完全有意义。

我想我想说的是,有一组简单的步骤可以清理您的数据,以便您可以将其划掉并说“完成”。您始终必须考虑这些数据的用途。

Short answer: no.

Long answer: it depends.

Basically you can't say that a certain amount of filtering is or isn't sufficient without considering what you want to do with it. For example, the above will allow through "javascript:dostuff();", which might be OK or it might not if you happen to use one of those GET or POST values in the href attribute of a link.

Likewise you might have a rich text area where users can edit so stripping tags out of that doesn't exactly make sense.

I guess what I'm trying to say is that there is simple set of steps to sanitizing your data such that you can cross it off and say "done". You always have to consider what that data is doing.

沉鱼一梦 2024-08-20 18:30:39

这很大程度上取决于您要在哪里使用它。

  • 如果您打算将内容显示为 HTML,请务必确保正确指定编码(例如:UTF-8)。只要删除所有标签,应该就可以了。
  • 对于在 SQL 查询中使用,addslashes 是不够的!例如,如果您使用 mysqli 库,则需要查看 mysql::real_escape_string。对于其他DB库,请使用指定的转义函数!
  • 如果您要在 javascript 中使用该字符串,则添加斜杠将不够
  • 您对浏览器错误感到偏执,请查看 OWASP Reform 库
  • 如果 在 HTML 以外的其他上下文中使用数据,则适用其他转义技术。

It highly depends where you are going to use it for.

  • If you are going to display things as HTML, make absolutely sure you are properly specifying the encoding (e.g.: UTF-8). As long as you strip all tags, you should be fine.
  • For use in SQL queries, addslashes is not enough! If you use the mysqli library for example, you want to look at mysql::real_escape_string. For other DB libraries, use the designated escape function!
  • If you are going to use the string in javascript, addslashes will not be enough.
  • If you are paranoid about browser bugs, check out the OWASP Reform library
  • If you use the data in another context than HTML, other escaping techniques apply.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文