首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免HTML/JavaScript注入的htmlspecialchars(addslashes(输入))

避免HTML/JavaScript注入的htmlspecialchars(addslashes(输入))
EN

Stack Overflow用户
提问于 2014-12-02 12:48:31
回答 1查看 1.6K关注 0票数 4

假设有一些PHP代码,它首先应用addslashes(),然后将htmlspecialchars()应用于HTML,从而对输入进行净化。我听说这是一种不安全的做法,但我不知道为什么。

对于可以将何种格式应用于危险的输入(如脚本标记中的JavaScript ),以绕过这两个函数所施加的安全措施,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 12:57:42

addslashes与XSS无关(在实际有用的地方,几乎总是有更好的东西)。

htmlspecialchars不是一种不安全的方法。这本身就是不够的。

如果您将内容作为“安全”元素的主体,htmlspecialchars将保护您。

如果您将内容作为“安全”属性的值(如果引用正确的话),它将保护您。

如果将其作为“不安全”属性或元素(其中内容可以被视为JavaScript)的值,如<script>onmoseoverhrefstyle,则不会保护您。

例如:

代码语言:javascript
复制
<!-- http://example.com/my.php?message=", steal_your_cookies(), " -->
<!-- URL not encoded for clarity. Imagine the definition of steel_your_cookies was there too -->

<button onclick='alert("<?php echo htmlspecialchars($_GET['message']); ?>")'>
   click me
</button>

会给你:

代码语言:javascript
复制
<button onclick='alert("&quot;, steal_your_cookies(), &quot;")'>
   click me
</button>

这意味着与:

代码语言:javascript
复制
<button onclick='alert("", steal_your_cookies(), "")'>
   click me
</button>

当你点击按钮时会偷走你的饼干。

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

https://stackoverflow.com/questions/27249888

复制
相关文章

相似问题

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