我的网站已经被黑了几次,我正在对平面文件发表评论。我过去曾试图逃避字符串,因为我没有使用SQL,所以我不能使用mysql_real_escape_string
。但是,我已经尝试了许多其他方法来保持字符串免于这样的内容:<#$()[]{},.;!
。我使用下面的代码:
$newData = nl2br(htmlspecialchars($_POST['ta'], ENT_QUOTES, 'UTF-8'));
我也用这个:
$search = array("!", "$", "%", "(", ")");
$URLS = str_replace($search, " ", $url);
最后,我用这个:
if (keychar == "`" || keychar =="#" || keychar =="^" || keychar =="*") {
他们似乎都没有工作,我的网站仍然被黑客入侵。我想知道是否有人有任何想法或能指出我正确的方向。
我相信textarea
很好。我不是100%肯定,但我知道pix和username的URL文本框很容易受到攻击。我正在尝试学习如何关闭所有漏洞,因为你可以看到它无法正常工作。
<style>
div.container {
width: 100%;
border: 1px solid gray;
}
header, footer {
padding: 1em;
color: white;
background-color: black;
clear: left;
text-align: center;
}
nav {
float: left;
max-width: 160px;
margin: 0;
padding: 1em;
}
nav ul {
list-style-type: none;
padding: 0;
}
nav ul a {
text-decoration: none;
}
article {
margin-left: 170px;
border-left: 1px solid gray;
padding: 1em;
overflow: hidden;
}
fieldset {
word-break: break-all;
border:1px solid #999;
border-radius:8px;
box-shadow:0 0 10px #999;
width:97%;
}
legend {
background:#fff;
}
table {
word-break: break-all;
width:97%;
border:0;
cellspacing:0;
cellpadding:0;
}
div {
overflow:hidden;
border: solid 2px gray;
padding: 1em;
}
</style>
<!DOCTYPE html>
<html>
<body>
<?php
// $date = "".date("F d Y H:i:s.");
$date = "".date("g:ia \n l jS F Y") . "\n";
$myfile = "file.txt";
if(isset($_POST['ta'])){
if(isset($_POST['urls'])){
$url = $_POST['urls'];
}
$wordcount = str_word_count($_POST['ta']);
$myfile ="file.txt";
$newData = nl2br(htmlspecialchars($_POST['ta'], ENT_QUOTES, 'UTF-8'));
$nn = nl2br(htmlspecialchars($_POST['namee'], ENT_QUOTES, 'UTF-8'));
// $fieldsetstring =
// $fieldsetfilter = htmlspecialchars($fieldsetstring, ENT_QUOTES, 'UTF-8');
$handle = fopen($myfile, 'a+');
// fwrite($handle, '<fieldset><legend>Anonymous: ' . $date . '</legend>' . $newData . '</fieldset></br>');
fwrite($handle, '<div><fieldset><legend><img src="'.$URLS.'" width="42" height="42">' . $nn . ' : ' . $date . '</a></legend><table><tr><td><h1>' . $newData . '</h1></td></tr></table></fieldset></div></br>');
fclose($handle);
}
?>
<br/>
<br/>
<br/>
<?php
if(file_exists("$myfile")){
$myData = file_get_contents("$myfile");
}
?>
<a></a>
<form action = "index.php" method = "POST" style="align:center">
Username : <input type="text" name="namee" value="Anonymous" style="text-align:center" onkeypress="return check(event)"/>
url : <input type="text" name="urls" value="http://findicons.com/files/icons/398/halloween/128/jack.png" style="text-align:center; width:30%" onkeypress="return check(event)" onkeyup="return check(event)"/></br>
<textarea name="ta" cols="64" rows="10"></textarea>
<br /><br />
<input name="myBtn" type="submit" value="Submit"/>
</body>
</html>
在发布之前,我尝试过Stack Overflow的许多转义。事实上,我已经试图解决这个问题已经持续了一个月,而且我确信它已被攻击了几次。这就是我所知道的。任何帮助都会很棒。
答案 0 :(得分:1)
您可以尝试此功能:
function protect($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
更新:代码说明
该函数只接受一个变量或一个参数,并通过PHP的trim
,stripslashes
和htmlspecialchars
函数传递它。返回的变量对于可能的注射是安全的。