2017-08-20 7 views
0

私のサイトはすでに数回ハッキングしていますが、私はフラットファイルにコメントを投稿しています。私は過去に文字列をエスケープしようとしました.SQLを使用していないので、mysql_real_escape_stringは使用できません。しかし、私は文字列をこのようなものから解放する多くの他の方法を試みました:<#$()[]{},.;!。あなたは以下を参照することができますように私は、コードを使用します。ユーザー名とURLのテキストボックスをエスケープする

$newData = nl2br(htmlspecialchars($_POST['ta'], ENT_QUOTES, 'UTF-8')); 

私もこれを使用します。

$search = array("!", "$", "%", "(", ")"); 
$URLS = str_replace($search, " ", $url); 

最後に、私はこれを使用します。それらの

if (keychar == "`" || keychar =="#" || keychar =="^" || keychar =="*") { 

いずれも動作するようには思えませんが、私のサイトはまだハッキングしています。誰かが何かアイディアを持っているのか、それとも正しい方向で私を指し示すことができるのだろうかと思っていた

私はtextareaが良いと思います。私は100%確信していませんが、私はpixの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 { 
 
\t word-break: break-all; 
 
\t border:1px solid #999; 
 
\t border-radius:8px; 
 
\t box-shadow:0 0 10px #999; 
 
\t width:97%; 
 
} 
 
legend { 
 
\t 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 \t \t \t 
 
// $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']; \t 
 
    } 
 
    $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>

私はこれを投稿する前に私は、スタックオーバーフローから多くのエスケープを試してみました。実際には、私はこれを1ヶ月間把握しようとしており、数回以上ハッキングされていると確信しています。それは私が知っているものです。どんな助けも素晴らしいだろう。

答えて

1

あなたはこの機能を試すことができます。

function protect($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

UPDATE:コード説明

機能だけで変数や引数を取り、PHPのtrimstripslasheshtmlspecialchars機能を通してそれを渡します。返される変数は、注入の可能性から安全です。

+0

私はそのコードを挿入した後に注射を少ししてきましたが、それは今のところ働いているようです。どうもありがとうございました。 –

+0

コードのみの回答は、OPと今後のSO読者を教育するためにはほとんど行いません。あなたの答えを改善し、あなたの方法が何をし、なぜそれが良い考えであるかを説明してください。 – mickmackusa

関連する問題