Kjapp og trygg hosting for Wordpress

Godkjenne kommentarer - disable links i kommentarer

Keanu

Geek
De fleste nettlesere vil ikke tolke
Kode:
http://vinnting.no/
som en link uten et a-element er omkranset den.

Det som vil skje er at det vil stå
Kode:
Kul side, sjekk ut min side http://vinnting.no/
som altså ikke vil gi noen backlink eller synlig link.

Om visningen av kommentarer har spesiell funksjonalitet, slik man finner på de fleste ferdigsnekra forum og cms-er, kan det selvsagt hende at lenker automatisk vil bli omkranset med a-element.

Jeg bruker f.eks. kun strip_tags for å unngå linker på snooze.no (f.eks. Raske Menn - Dangelbærsangen), og det fungerer helt fint.
 

Keanu

Geek
Hvis jeg husker riktig, bruker du mysql_real_escape_string for å unngå SQL injections, ved at alle potensielt farlige(?) tegn escapes (gjør at de ikke blir tolka som syntax i sql).

Altså hvis noen prøver å legge inn (jeg har ikke brukt sql direkte på lang tid, så om noe syntax er feil, beklager jeg. :)
Kode:
'; DROP TABLE comments; INSERT INTO categories '...
så blir de farlige tegna (muligens alt) escapet, slik at du ikke mister tabellen. :)

Du kan jo kjøre
Kode:
$comment = mysql_real_escape_string(strip_tags($_POST["comment"]));
så er du godt sikra både mot spam og sql injections. Om du ikke gjør det på noen annen måte, bør du alltid passe på at sql injections ikke er mulig. Det blir ofte glemt i hjemmesnekra kode.

En annen funksjon som kan være interessant kan være htmlspecialchars, som gjør at om noen legger inn:
Kode:
Kul side, sjekk ut min side <a href="http://vinnting.no/">her<a>
så vil akkurat det bli vist, men uten at browseren tolker det som en lenke. (altså den funksjonaliteten som er i code-delen av dette forumet omtrent)
 
Sist redigert:

Tonny Kluften

Administrator
Jeg har en send til en venn mulighet også. Kan den misbukes med sql injections? Den ser sånn ut:


<?php
function getVars()
{
$retVar="";
global $_POST;
if(isset($_POST))
{
foreach($_POST as $key=>$value)
{
if($key!="key")
{
if($retVar!="")$retVar.="&";
$retVar.="$key=".urlencode($value);
}
}
}
return $retVar;
}
session_start();
if (!strcasecmp($_POST["key"], $_SESSION["verification_key"]) == 0) {
header("location:sendtofriend.php?failed=err_var&".(getVars()));
exit();
}
include("admin/connection.php");
$to_email = $_POST["to_email"];
$to_name = $_POST["to_name"];
$from_email = $_POST["from_email"];
$from_name = $_POST["from_name"];
$remark = $_POST["remark"];
$recipe_id = $_POST["recipe_id"];

$res_url = mysql_query("select url_script from ".TABLE_PREFIX."settings");
if($row_url = mysql_fetch_array($res_url)){
$site_url = $row_url["url_script"];
}
//Send Email
//Mail content
$subject = "Message from ".$from_name;
$emailbody = "You have a message from ".$from_name."\n\n";
$emailbody .= "Message: ".$remark."\n\n";
$emailbody .= $site_url."/view_recipe.php?id=".$recipe_id."\n";

SendMail ($emailbody, $subject, $from_email, $to_email, $from_name, $to_name, $from_email);
header("location:view_recipe.php?id=$recipe_id&sendfreind=su");
exit();
function SendMail($body, $subject, $from, $to, $fromname, $toname, $replyto)
{
$body= stripslashes($body);
$subject = stripslashes($subject);
mail($toname." <".$to.">", $subject, $body,
"From: $fromname <$from>\n" .
"Reply-To: $replyto\n" .
"X-Mailer: PHP/" . phpversion());
}
?>
 

Keanu

Geek
Kan man bruke det sånn

$comment = strip_tags($_POST["comment"]);
$comment = mysql_real_escape_string($_POST["comment"]);
$comment = htmlspecialchars($_POST["comment"]);

istedenfor

$comment = mysql_real_escape_string(htmlspecialchars(strip_tags($_POST["comment"])));

eller har det ikke noe å si?
Nei, du kan ikke gjøre det, siden du da vil overskrive variabelen $comment hver gang; du kan derimot gjøre det slik for å få det mer oversiktlig:

Kode:
$comment = strip_tags($_POST["comment"]);
$comment = mysql_real_escape_string($comment);
$comment = htmlspecialchars($comment);

SQL injections kan forekomme når du sender ubehandlet form-data (fra bruker) direkte inn i SQL-spørring. Ut fra hva jeg kan se gjør du ikke det i koden i forrige post. Nå kan jeg ikke gi noen garanti, siden synet og tankegangen er treg etter en lang natt med semantiske nett, description logics og web ontology language. :)
 
Topp