好吧,我开始学习PHP了。所以在一篇教程中,作者引用了action="<?php echo $_SERVER["PHP_SELF"];?>"
嗯,对我来说,写一句是action=""
并且危险性更小。
1 - 不是吗?
而且,我很容易注意到,如果用户在地址栏上添加如下内容:%22%3E%3Cscript%3Ealert('showing a msg on the website')%3C/script%3E
他将关闭<form>
并在源代码中添加JS警报...
但是,独特的人会看到这是他自己
2 - 或者不是?
该人如何向所有访客显示此消息?
谢谢!
答案 0 :(得分:1)
回答你的第一个问题,action=""
优于action="<?=$_SERVER['PHP_SELF']?>"
- 它基本上是相同的,如果没有指定,操作将默认为self。这是标准做法。
您的第二个问题,这实际上取决于您对查询字符串的处理方式。如果您使用ID或页面名称之类的东西,首先您(当然)将使用urldecode(),strip_tags()等函数转义和解码您的URL变量,因此您不必担心这一点。
如果有人设法通过你的消毒,那么这样的剧本只会显示在他们的屏幕上。但是,如果有人知道他们可以通过你的低于标准的安全性,那么他们就不会只是向他们的屏幕发出警告......
长短是:
Cross Site Scripting(XSS)是您应该熟悉的主题。值得庆幸的是,PHP有许多内置函数可以帮助您实现安全的Web应用程序。以下是一些进一步阅读的链接: