首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是URL的“足够的消毒”?

什么是URL的“足够的消毒”?
EN

Stack Overflow用户
提问于 2010-01-12 02:22:11
回答 3查看 12.6K关注 0票数 8

URL将是

  1. 保存到MySQL数据库
  2. ,用于在用户的配置文件

上显示图片

strip_tags()和mysql_real_escape_string()就足够了吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-12 02:56:42

“足够的消毒”完全取决于你所说的环境。MySQL的卫生处理应该完全独立于web输出的卫生处理,并且您应该单独处理它们,以避免很多麻烦。

消毒MySQL

  • mysql_real_escape_string()将净化一段数据并使其安全地放入SQL查询中。
  • 任何其他类型的恶意数据(例如字符串中的HTML标记)都应该被完全忽略。试图在这里操作它会让您头痛,因为您试图“取消操作”,稍后将它从数据库中取出。坏的"web数据“不会损害您的数据库。

输出消毒

输出时的

  • htmlspecialchars($val)将防止任何恶意标记的呈现,因为如果要输出delimiters.
  • Use元素引用的属性(如<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />

),则<>字符将转换为实体表示,而不是以标记delimiters.

  • Use( ENT_QUOTES修饰符)的形式呈现

这应该是你所需要的,除非你有特殊的要求。strip_tags()不应该真正用于清理,因为它可能会被格式错误的HTML所愚弄。清理是一个有价值的目标,如果您能够将上下文保持独立,那么在它们之间的数据操作中遇到的问题就会更少。

票数 16
EN

Stack Overflow用户

发布于 2010-01-12 02:28:12

更安全和更好的方法是在字符串上调用htmlentities(),而不是依赖于strip_tags()。

strip_tags()不会删除html特殊字符,比如'"&

例如,如果您的代码是:

代码语言:javascript
复制
<img src="<?= strip_tags($myVar) ?>">

代码语言:javascript
复制
$myVar = '">something goes here<';

最后你会:

代码语言:javascript
复制
<img src="">something goes here<">

这显然是XSS漏洞的根源;一个实际的漏洞是留给读者的练习。

票数 1
EN

Stack Overflow用户

发布于 2010-01-12 02:35:00

最初,我推翻了Frank的回答,但我想到了一个问题: will实体()会破坏这样的合法urls:

http://www.mywebsite.com/profile?id=jojo&w=60&h=60

或许去掉尖括号+ mysql_real_escape就足够了?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2046270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档