基本形式安全

时间:2013-12-22 23:08:45

标签: php forms security

好吧,我开始学习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 - 或者不是?

该人如何向所有访客显示此消息?

谢谢!

1 个答案:

答案 0 :(得分:1)

回答你的第一个问题,action=""优于action="<?=$_SERVER['PHP_SELF']?>" - 它基本上是相同的,如果没有指定,操作将默认为self。这是标准做法。

您的第二个问题,这实际上取决于您对查询字符串的处理方式。如果您使用ID或页面名称之类的东西,首先您(当然)将使用urldecode()strip_tags()等函数转义和解码您的URL变量,因此您不必担心这一点。

如果有人设法通过你的消毒,那么这样的剧本只会显示在他们的屏幕上。但是,如果有人知道他们可以通过你的低于标准的安全性,那么他们就不会只是向他们的屏幕发出警告......

长短是:

  • 使用空白动作将表格对准自己
  • 再次处理该表单后,请使用标题重定向,以避免“您确定要重新发送表单数据吗?”消息和/或重复数据处理
  • 正确转义您的查询字符串变量,这样您就不必担心任何此

Cross Site Scripting(XSS)是您应该熟悉的主题。值得庆幸的是,PHP有许多内置函数可以帮助您实现安全的Web应用程序。以下是一些进一步阅读的链接: