假设有一些PHP代码,它首先应用addslashes(),然后将htmlspecialchars()应用于HTML,从而对输入进行净化。我听说这是一种不安全的做法,但我不知道为什么。
对于可以将何种格式应用于危险的输入(如脚本标记中的JavaScript ),以绕过这两个函数所施加的安全措施,我们将不胜感激。
发布于 2014-12-02 12:57:42
addslashes与XSS无关(在实际有用的地方,几乎总是有更好的东西)。
htmlspecialchars不是一种不安全的方法。这本身就是不够的。
如果您将内容作为“安全”元素的主体,htmlspecialchars将保护您。
如果您将内容作为“安全”属性的值(如果引用正确的话),它将保护您。
如果将其作为“不安全”属性或元素(其中内容可以被视为JavaScript)的值,如<script>、onmoseover、href或style,则不会保护您。
例如:
<!-- 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>会给你:
<button onclick='alert("", steal_your_cookies(), "")'>
click me
</button>这意味着与:
<button onclick='alert("", steal_your_cookies(), "")'>
click me
</button>当你点击按钮时会偷走你的饼干。
https://stackoverflow.com/questions/27249888
复制相似问题