我无法在我们的网站上修复跨站点脚本(XSS)。我正在消毒输入。代码的某些部分如下
$smecompname = $_POST['companyname'];
$companyname = strip_tags(trim($smecompname));
$companyname = htmlspecialchars($companyname);
$companyname = $this->validateInput($companyname);
protected function validateInput($data) {
$data = preg_replace('/[^\p{Arabic}\dA-Za-z0-9 !@#%^&*_.-]/ui', ' ', $data);
$data = htmlspecialchars($data);
$data = html_entity_decode($data);
return $data; }
客户端正在使用某种测试工具,并且评论是站点上可能发生跨站点脚本(XSS)。请告知我还能采取哪些措施来解决问题。
我们可以使用.htaccess文件修复此问题吗? 谢谢。
答案 0 :(得分:1)
我们可以利用filter_input_array(在PHP 5> = 5.2.0,PHP 7中可用) 我通常会将此片段添加到SessionController中,因为所有调用都会在任何其他控制器与数据交互之前通过。以这种方式,所有用户输入在1个中心位置被消毒。 如果这是在项目开始时或数据库中毒之前完成的,那么在输出时你就不会有任何问题......停止垃圾进入,垃圾进出。
struct MyType{};
MyType foo()
{
return MyType();
}
void bar(MyType mt){ }
int main(int value)
{
auto q = foo();
bar(q);
}