如果我在constructor(private cdRef:ChangeDetectorRef) {}
animDetails: string;
animDone(event:any) {
console.log('Ended!');
this.animDetails = 'I am done!';
this.cdRef.detectChanges();
}
和test.php
制作表单,则可能会被黑客攻击。我知道form action ="<?php echo $_SERVER[PHP_self]"?>
可以保护它。但如果我使用htmlspecialchars()
代替。它没有被黑客攻击。这有什么区别?
如果我编辑url test.php / blah blah,那么它会在源代码中成为表单操作,但在<form action ="test.php">
时它不会发生。这不是一回事吗? form action="test.php"
和test.php
?
答案 0 :(得分:1)
将<form action ="test.php">
分配给HTML时,此代码是静态的,无法在服务器端进行操作。如果您分配全局$_SERVER['PHP_SELF']
,则页面中的此条目是动态的,取决于地址栏中找到的用户URL,使他们可以像这样操作此代码:
如果这个世界是一个安全可靠的居住地......
浏览器网址: http://www.test.com/html/form.php
<form action="/html/index.php" method="post">
现在是现实世界......
浏览器网址: http://test.com/form.php/%22%3E%3Cscript%3Ealert('xss')%3C
/script%3E%3Chack%22
<form action="/html/index.php/"><script>alert('xss')</script><hack"" method="post">
这可以通过围绕$_SERVER['PHP_SELF']
内部htmlspecialchars()
内部功能来避免,该功能可以有效地清理脚本,使其如下所示:
<form action="/html/index.php/"><script>alert('xss')</script><hack"" method="post">