在https://www.owasp.org/index.php/PHP_Top_5#How_to_Determine_if_you_are_Vulnerable_2链接,标题 P2:跨站点脚本 > 如何防范它;在第 4 和第 5 项中写道:
- 第 4 项:自由文本输入只有在使用 HTML 实体后才能安全地重新显示给用户
- 第 5 项:通过 URL 发送回用户的变量必须使用 urlencode() 进行 URL 编码,但不推荐使用 GET 请求用于导航以外的任何用途
我的问题
第一季度
对于第 4 项,它明确表示can only但我记得我读过这htmlspecialchars()
与htmlentities()
. (关于 . 的优越性的示例源链接htmlspecialchars
。请阅读Pornel_的评论:在 PHP 站点中避免 xss 攻击的最佳实践是什么)所以我在输入 OWASP 后感到困惑。当我将 MySQL 用户输入的数据作为 html 打印到屏幕上时,我是否应该用我使用的htmlspecialchars()
替换我 的。htmlentities()
第二季度
对于我的表单(添加文章、添加评论、向管理员发送电子邮件),我使用Post - Redirect - Session Variables
流程。(我的解释对你来说可能很愚蠢,但我的意思是我不在GET
流程的第三步使用。GET
我使用Session
变量而不是 。)所以我还需要urlencode()
在Session
变量的某个地方使用吗?(注意:即使你是,我也不知道HOW,那是我要研究的另一个话题,我暂时只想学习yes或no以及为什么我在我的文章中找不到这个问题的答案研究。当然,如果您也定义了 HOW 部分,我们将不胜感激)
提前
致谢