你如何避免跨站点脚本攻击?
跨站点脚本攻击(或跨站点脚本)是指您的主页上有一个留言板,并且客户发布了一些javascript代码,其中fx将您重定向到另一个网站或通过电子邮件将您的cookie发送给恶意用户或它可能是很多其他的东西,可以证明是真正有害于你和访问你的页面的人.
我相信它可以做到fx.在PHP中通过验证表单,但我没有经验足够fx.禁止javascript或其他可能伤害你的东西.
我希望你理解我的问题,你能帮助我.
我相信它可以做到fx.在PHP中通过验证表单
并不是的.输入阶段完全是解决XSS问题的错误地方.
如果用户输入,比如输入,则本身没有任何问题.我刚刚在这条消息中做到了,如果StackOverflow不允许它,我们在网站上谈论JavaScript时会遇到很大困难!在大多数情况下,您希望允许任何输入(*),以便用户可以使用
<
字符来表示小于号.
问题是,当您将一些文本写入HTML页面时,您必须正确地将其转义为它所进入的上下文.对于PHP,这意味着htmlspecialchars()
在输出阶段使用:
Hello, !
[PHP提示:您可以自己定义一个名称较短的函数echo htmlspecialchars
,因为每次要将变量放入某些HTML时,都要进行大量的输入.
无论文本来自何处,无论是否来自用户提交的表单,这都是必要的.虽然用户提交的数据是忘记HTML编码的最危险的地方,但关键是你要用一种格式的字符串(纯文本)并将其插入另一种格式(HTML)的上下文中.无论何时将文本放入不同的上下文,您都需要一个适合该上下文的编码/转义方案.
For example if you insert text into a JavaScript string literal, you would have to escape the quote character, the backslash and newlines. If you insert text into a query component in a URL, you will need to convert most non-alphanumerics into %xx
sequences. Every context has its own rules; you have to know which is the right function for each context in your chosen language/framework. You cannot solve these problems by mangling form submissions at the input stage—though many naïve PHP programmers try, which is why so many apps mess up your input in corner cases and still aren't secure.
(*: well, almost any. There's a reasonable argument for filtering out the ASCII control characters from submitted text. It's very unlikely that allowing them would do any good. Plus of course you will have application-specific validations that you'll want to do, like making sure an e-mail field looks like an e-mail address or that numbers really are numeric. But this is not something that can be blanket-applied to all input to get you out of trouble.)
当服务器接受来自客户端的输入然后盲目地将该输入写回页面时,就会发生跨站点脚本攻击(XSS).大多数针对这些攻击的保护涉及转义输出,因此Javascript变成纯HTML.
要记住的一件事是,不仅是直接来自客户端的数据可能包含攻击.一个存储的XSS攻击需要编写恶意的JavaScript到一个数据库,其内容,然后由Web应用程序查询.如果数据库可以与客户端分开编写,则应用程序可能无法确定数据是否已正确转义.因此,Web应用程序应将其写入客户端的所有数据视为可能包含攻击.
有关如何保护自己的详尽资源,请参阅此链接:http://www.owasp.org/index.php/XSS_( Cross_Site_Scripting) _prevention_Cheat_Sheet