【发布时间】:2015-04-12 12:09:18
【问题描述】:
好的,所以我已经学习了一点 PHP,并尝试制作一个简单的应用程序,但我不确定我的网页是否安全免受 xss 和其他此类攻击。
我的 PHP 代码
<?php
$title=$keywords=$description="";
$valid_er="";
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty($_POST['title'])){
$valid_er="has-error";
}
else{
$title="<title>".test($_POST["title"])."<title>";
}
$keywords='<meta name="keywords" content="'.test($_POST["keywords"]).'" />';
$description='<meta name="description" content="'.test($_POST['description']).'" />';
}
function test($ci){
$ci=htmlentities($ci);
$ci=stripcslashes($ci);
return $ci;
}
?>
还有我的 HTML 表单
<form method='post' class='form-group' action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label> Your Title </label> <input placeholder="Your websites title" type="text" name="title" class='form-control' class='form-group-item'/></br>
<label> Keywords </label> <input placeholder="Your keywords separated by comma " type="text" name="keywords" class='form-control' class='form-group-item'/></br>
<label>Description </label> <textarea placeholder="A nice description about your website;" name="description" class='form-control'></textarea></br>
<input type="submit" class='btn btn-info'>
</form>
我只是想知道我是否容易受到跨站点脚本的攻击,因为我不认为只使用
htmlspecialchars()
会保护我。
【问题讨论】:
-
如果你能告诉我我的代码是安全的,那真的很有帮助
-
您不需要使用 stripcslashes 来转义 HTML。 htmlspecialchars 就足够了。此外,当您在 PHP 代码中编写 HTML 时,不应使用转义字符,例如
&lt;,因为它们将在浏览器中打印而不是被解释。基本上:当你写HTML时,正常写;当您显示来自用户输入的内容时,请使用 htmlspecialchars。这有帮助吗? -
实际上我之前为添加 name 的值制作了相同的代码,因此由于 name 不包含斜杠,我做了所有这些,但我使用了相同的代码。我正在使用 <因为我想显示 "
标签: php mysql security xss protection