URL将是
上显示图片
strip_tags()和mysql_real_escape_string()就足够了吗?
发布于 2010-01-12 02:56:42
“足够的消毒”完全取决于你所说的环境。MySQL的卫生处理应该完全独立于web输出的卫生处理,并且您应该单独处理它们,以避免很多麻烦。
消毒MySQL
mysql_real_escape_string()将净化一段数据并使其安全地放入SQL查询中。输出消毒
输出时的
htmlspecialchars($val)将防止任何恶意标记的呈现,因为如果要输出delimiters.<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" /> ),则<和>字符将转换为实体表示,而不是以标记delimiters.
ENT_QUOTES修饰符)的形式呈现这应该是你所需要的,除非你有特殊的要求。strip_tags()不应该真正用于清理,因为它可能会被格式错误的HTML所愚弄。清理是一个有价值的目标,如果您能够将上下文保持独立,那么在它们之间的数据操作中遇到的问题就会更少。
发布于 2010-01-12 02:28:12
更安全和更好的方法是在字符串上调用htmlentities(),而不是依赖于strip_tags()。
strip_tags()不会删除html特殊字符,比如'"&
例如,如果您的代码是:
<img src="<?= strip_tags($myVar) ?>">和
$myVar = '">something goes here<';最后你会:
<img src="">something goes here<">这显然是XSS漏洞的根源;一个实际的漏洞是留给读者的练习。
发布于 2010-01-12 02:35:00
最初,我推翻了Frank的回答,但我想到了一个问题: will实体()会破坏这样的合法urls:
http://www.mywebsite.com/profile?id=jojo&w=60&h=60
或许去掉尖括号+ mysql_real_escape就足够了?
https://stackoverflow.com/questions/2046270
复制相似问题